【问题标题】:Connection refused: accessing a spring boot application running in docker container连接被拒绝:访问在 docker 容器中运行的 Spring Boot 应用程序
【发布时间】:2018-02-07 16:31:32
【问题描述】:

我的 Spring Boot 应用程序和 mysql 数据库在单独的 docker 容器中运行。我可以从我的主机访问服务器数据库。

我的 Spring Boot 应用程序的 application.properties 如下所示:

spring.datasource.url=jdbc:mysql://benefitsmysql:3308/benefitsmysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# ====================================================================================
# = SSL Configuration
# ====================================================================================
#security.basic.enabled=false
server.port=8443
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=*******
server.ssl.keyStoreType=jks
server.ssl.keyAlias=tomcatselfsigned

我正在使用 docker 的 maven 插件构建一个 docker 容器映像。我的 Dockerfile 如下所示:

FROM java:8
VOLUME /tmp
ADD Benefits.jar Benefits.jar
EXPOSE 8443
RUN bash -c 'touch /Benefits.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/Benefits.jar"]

我正在为 Spring Boot 应用程序启动 docker 容器,如下所示:

docker run -p 8443:8443 --name benefits --link benefitsmysql:mysql -d c794a4d0c634

如果我执行docker ps -a,我会得到以下输出

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                    NAMES
8070c575b6dd        c794a4d0c634        "java -Djava.secur..."   2 minutes ago       Up 2 minutes            0.0.0.0:8443->8443/tcp   benefits
aa417df08b94        mysql:5.6           "docker-entrypoint..."   2 days ago          Up 2 days               0.0.0.0:3308->3306/tcp   benefitsmysql
f55a2a7ac487        hello-world         "/hello"                 2 days ago          Exited (0) 2 days ago                            gifted_lalande

现在,当我从 Windows 机器(如 https://192.168.99.103:8443/home)访问在 docker 容器内运行的 Spring Boot 应用程序时,我收到连接被拒绝错误 ERR_CONNECTION_REFUSED。

我在这个配置中缺少什么?

【问题讨论】:

  • 您确定docker-machine ip default 正在返回192.168.99.103
  • 是的。是192.168.99.103
  • 还要检查应用程序是否正常启动docker exec benefits curl https://localhost:8443/home 还要检查正在运行的应用程序的日志docker logs -f benefits
  • docker exec benefits curl https://localhost:8443/home 返回错误rpc error: code = 2 desc = containerd: container did not start before the specified timeout
  • 您的容器在运行吗? docker logs benefits

标签: java docker spring-boot


【解决方案1】:

瑜伽

我阅读了您的博客,并应用了您的解决方案,但 docker-machine ip 并没有解决我的问题。 然后我意识到 docker 容器无法与 127.0.0.1 通信,我使用他们的容器 ip

docker inspect <container_id>

然后找到 IpAddress。

这个ip地址解决了我的问题。我不需要使用docker-machine ip

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2019-06-06
    • 2019-10-05
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多