docker - Docker compose 服务通信
问题描述
所以我有一个包含 3 个服务的 docker-compose 文件:后端、反应前端和 mongo。
后端 Dockerfile:
FROM ubuntu:latest
WORKDIR /backend-server
COPY ./static/ ./static
COPY ./config.yml ./config.yml
COPY ./builds/backend-server_linux ./backend-server
EXPOSE 8080
CMD ["./backend-server"]
前端 Dockerfile:
FROM nginx:stable
WORKDIR /usr/share/nginx/html
COPY ./build .
COPY ./.env .env
EXPOSE 80
CMD ["sh", "-c", "nginx -g \"daemon off;\""]
所以没什么不寻常的,我猜。
码头工人-compose.yml:
version: "3"
services:
mongo-db:
image: mongo:4.2.0-bionic
container_name: mongo-db
volumes:
- mongo-data:/data
network_mode: bridge
backend:
image: backend-linux:latest
container_name: backend
depends_on:
- mongo-db
environment:
- DATABASE_URL=mongodb://mongo-db:27017
..etc
network_mode: bridge
# networks:
# - mynetwork
expose:
- "8080"
ports:
- 8080:8080
links:
- mongo-db:mongo-db
restart: always
frontend:
image: frontend-linux:latest
container_name: frontend
depends_on:
- backend
network_mode: bridge
links:
- backend:backend
ports:
- 80:80
restart: always
volumes:
mongo-data:
driver: local
这是有效的。我的问题是,通过添加ports: - 8080:8080
到后端部分,该服务器对主机可用。从理论上讲,网络应该在没有这些行的情况下工作,正如我在 docker docs 和this question中阅读的那样,但是如果我删除它,API 调用就会停止工作(但是在前端服务下的 docker-compose 中编写的 curl 调用仍然可以工作)。
解决方案
推荐阅读
- github - 是否可以找到隐藏的 GitHub Pages 链接?
- android - Android Q 中没有专辑._ID
- python - 如果斜率 a 设置为 10,截距 b 设置为 0,我如何计算每个 x 值的 y?
- javascript - 如何在 gitlab 中配置羽毛笔编辑器支持 markdown 语法?
- html - 创建指向特定 jQuery 选项卡的链接
- cross-domain - 会话存储在同一选项卡中从域到子域持续存在
- django - “'pages.apps.PagesConfig'”和“pages”有什么区别?
- python - Pandas DF - 在一行中的连续列中查找序列
- c - 如何解决C程序中的分段错误
- reactjs - 物料表添加行位置