java - 连接本地容器docker

标签 java spring docker docker-compose dockerfile

我有一个具有以下设置的 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:

撰写完成后,我构建并运行以下 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 启动的其他服务?

最佳答案

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

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

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

关于java - 连接本地容器docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59938348/

相关文章:

php - Docker:nginx+mariadb+php+redis的docker-compose.yml文件

java - Mockito:了解when().thenThrow()函数如何工作

java - 重写 JPA @Embedded 列上的排序行为

java - RESTful webservice 和 HttpServlet 的区别

java - Scala中 "return"语句的目的?

java - 新 Mavenized 项目 - 找不到类路径

docker - 到 Kubernetes 的多播流量

java - 属性 `packagesToScan` 不工作

java - Spring 4 中的 @EnableTransactionManagement XML 等效项是什么?

docker - 如何将 RBAC 权限分配给系统 :anonymous service account in Kubernetes?