【问题标题】:Connect to mysql in a docker container from the another container spring boot从另一个容器 spring boot 连接到 docker 容器中的 mysql
【发布时间】:2021-05-09 12:11:54
【问题描述】:

我创建了一个实际工作的 sql server 容器。我已经尝试将我的 Spring Boot 应用程序连接到它并且它可以工作。

所以现在,我正在尝试构建 Spring Boot 应用程序:

docker build -f Dockerfile -t mySBApi .

完成。

然后,我正在尝试运行它:

docker run -p 8080:8080 mySBApi 

我收到了这条消息:

最后一个成功发送到服务器的数据包是 0 毫秒 前。驱动没有收到服务器发来的任何数据包。

这是我的 .properties:

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=mySBApi 
spring.datasource.username=SA
spring.datasource.password=srongPASSWORD75*
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

以防万一我的 Dockerfile:

FROM openjdk:15
ADD target/mySBApi-0.0.1-SNAPSHOT.jar mySBApi.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "mySBApi.jar"]

另一点:如果我尝试从 docker 连接到数据库,它也可以工作'-':

docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P strongPASSWORD75*

所以,我可以使用 docker 外部的 sql 容器,但如果我运行我的 Spring Boot 容器,它在外部可以完美运行,我就不能使用.....您对此有何看法?

【问题讨论】:

    标签: sql-server spring-boot docker


    【解决方案1】:
    【解决方案2】:

    好的,我终于改了解决办法,用容器的ip代替localhost或者容器的名字。

    以防万一有人因为sql server有问题而来到这里:

    我在配置它时遇到了很多问题,尝试从 SSMS 登录,非常沮丧。 不要问我为什么,但是当我决定停止本地机器上的 sql server 时,一切都在 5 分钟内完成...

    如果有帮助的话,再来一次我的步骤:

    1- 停止 sql server 2-创建sql容器 3-尝试从外部 docker 连接到它(使用 intelliJ) 4-推动中间容器并调整 .properties 为 docker

    Angular 在不到 2 分钟的时间内就被推送了,很高兴!

    【讨论】:

    • 容器似乎没有相互链接。您可以在运行 Spring Boot 容器时使用 --link 并将其链接到 mysql 容器。例如: docker run --name mySBApi --link mysqlContainer -p 8080:8080 mySBApi
    • 哦,我没有看到这个方法。非常感谢,它肯定会有所帮助。目前,我只有一个中间和一个前面,但我必须将它们分成 10 个微服务......再次感谢
    猜你喜欢
    • 2021-04-04
    • 2019-09-04
    • 2019-02-24
    • 2017-11-10
    • 2022-11-01
    • 2018-01-26
    • 2017-10-15
    • 2020-01-30
    相关资源
    最近更新 更多