【问题标题】:Can't access spring boot app running inside docker container from localhost无法从 localhost 访问在 docker 容器内运行的 Spring Boot 应用程序
【发布时间】:2020-08-10 21:17:26
【问题描述】:

我已经在这个问题上苦苦挣扎了几个小时。 我有以下设置:

Dockerfile

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/ROOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=dev"]
EXPOSE 8080

docker-compose.yml

version: '3'
services:
  app:
      container_name: app
      build:
         context: .
         dockerfile: Dockerfile
      restart: always
      links:
        - mysql-db
      depends_on:
        - mysql-db
      ports:
        - 8080:8080
      expose:
        - 8080
      networks:
        - spring-network
  mysql-db:
      restart: always
      container_name: mysql_db
      image: "mysql:8.0.19" 
      ports:
        - 3306:3306
      networks:
        - spring-network
      environment:
         MYSQL_ROOT_PASSWORD: 'password'
         MYSQL_DATABASE: 'db'
         MYSQL_USER: 'db-user'
         MYSQL_PASSWORD: 'password'
      volumes:
        - mysql-db:/var/lib/mysql
      command: --innodb-use-native-aio=0
      security_opt:
        - seccomp:unconfined
volumes:
  mysql-db:
networks:
    spring-network:
        driver: bridge

当我使用docker-compose up 运行应用程序时,它在容器内运行良好,但是当我在浏览器上点击 localhost:8080 时,我得到了

localhost 意外关闭连接

编辑:

  • spring boot 应用在 8080 端口上运行
  • docker 版本 19.03.8

【问题讨论】:

  • 你在使用 Docker 工具箱吗?如果您查看容器的启动日志,它是否说它正在侦听“localhost”或“127.0.0.1”或“0.0.0.0”?
  • 不,先生,很遗憾,我没有使用它。
  • 无需像“先生”一样称呼他 像@DavidMaze 一样称呼他

标签: spring-boot docker docker-compose


【解决方案1】:

几天后,我弄清楚了问题所在。我正在使用一个旧的 jar 文件(它在端口 80 上公开应用程序:/),我所做的只是生成一个新版本,它在 8080 mvn clean install 上公开应用程序,然后构建图像 docker-compose build,现在一切正常

【讨论】:

    【解决方案2】:

    删除暴露 - 它是容器之间的内部使用

    expose 的文档

    编辑: 您还有一个桥接网络,默认情况下您只能在同一桥接网络上的容器之间进行通信。

    要么只是删除网络部分 - 如果这是一个问题,这可能会导致容器过于暴露。

    或者阅读端口转发here

    【讨论】:

    • 这是个好建议(当你在这里时删除links:),但我认为这不会解决问题中的问题。
    • 从撰写文件中删除暴露和链接并没有解决它。 @StefanE
    • 发现了问题,我在下面的答案中解释了。感谢您的帮助@StefanE
    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 2015-11-19
    • 2019-02-21
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多