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