【问题标题】:Connect local container docker连接本地容器docker
【发布时间】:2020-01-27 20:19:24
【问题描述】:

我有一个包含以下设置的 docker-compose 配置文件:

version: '3.6'
services:
  mongo:
    image: mongo
    restart: always
    ports:
      - "27017:27017"
    networks:
      - devnetwork
  discovery:
    image: discovery
    ports:
      - "8761:8761"
    networks:
      - devnetwork
    environment:
      - SPRING_PROFILES_ACTIVE=dev  
      - DISCOVERY_SERVER=discovery
      - DISCOVERY_PORT=8761

networks:
  devnetwork:

在 compose 之后,我构建并运行以下 dockerfile:

FROM openjdk:12    
#RUN echo $(grep $(hostname) /etc/hosts | cut -f1) api >> /etc/hosts
ADD gubee-middleware/target/*.jar /usr/share/middlewareservice/middleware-service.jar
EXPOSE 9670
ENTRYPOINT ["/usr/bin/java", "-XX:+UnlockExperimentalVMOptions","-XX:+UseContainerSupport","-Dspring.profiles.active=dev", "-jar", "/usr/share/middlewareservice/middleware-service.jar"]

如何让我的 9670 端口服务 dockerfile 看到我使用 docker-compose 启动的其他服务?

【问题讨论】:

    标签: java spring docker docker-compose dockerfile


    【解决方案1】:

    您需要在启动容器时将容器附加到由 docker compose 创建的网络。

    这可以通过在执行docker run 命令时传递--network=<network-name>(通过运行docker network ls 获得)来完成。

    连接后,您的应用将能够访问通过 compose 启动的容器,并使用它们的名称作为主机。例如:http://mongo:27017

    【讨论】:

    • 应用程序正在尝试连接 localhost:27017 而不是 http://mongo:27017,如何解决这个问题?
    • 通过传递键和值作为 SPRING_DATA_MONGODB_URI=mongodb://mongo:27017/test 使用 env 变量覆盖它
    猜你喜欢
    • 2018-01-02
    • 2021-05-06
    • 2020-01-20
    • 2017-10-03
    • 2017-08-25
    • 2019-10-12
    • 2020-11-17
    • 2015-11-28
    • 2017-07-02
    相关资源
    最近更新 更多