我是 Docker 世界的纽比。我不能把我的头放在一般的docker网络上,特别是如何正确地连接我的后端和docker-compose文件内部的前端。我希望这两个服务通过localhost:port相互通信,而不是使用服务名称。我知道它与网络有关,但不知道如何按照我想要的方式使用它。谢谢你,谢谢
我的docker-compose文件:
version: '3.11'
services:
db:
container_name: postgres
image: postgres
ports:
- "5432:5432"
environment:
- POSTGRES_DB=${PGDATABASE}
- POSTGRES_USER=${PGUSER}
- POSTGRES_PASSWORD=${PGPASSWORD}
volumes:
- pg_data:/var/lib/postgresql/data
backend:
container_name: backend
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
- static_volume:/app/backend/static
- media_volume:/app/backend/media
ports:
- "8000:8000"
depends_on:
- db
frontend:
container_name: frontend
build:
context: ./frontend
dockerfile: Dockerfile
environment:
- IS_DOCKER=true
- WATCHPACK_POLLING=true
ports:
- "3000:3000"
volumes:
- .:/app
- node_modules:/app/frontend/node_modules
- static_volume:/app/frontend/public/static
depends_on:
- db
- backend
nginx:
container_name: nginx
working_dir: /app
image: nginx:stable-alpine
restart: always
ports:
- "80:80"
volumes:
- static_volume:/app/frontend/public/static
- media_volume:/app/backend/media
- ./nginx:/etc/nginx/conf.d
depends_on:
- frontend
- backend
volumes:
pg_data:
node_modules:
static_volume:
media_volume:
字符串
1条答案
按热度按时间rnmwe5a21#
两个容器不能使用
localhost
[*]进行通信,因为localhost
表示“此容器”。如果你想让你的frontend
容器访问backend
容器,它应该使用主机名backend
...,如果你想让backend
容器访问db
容器,它应该使用主机名db
(等等)。network_mode
选项设置为service:<server_name>
来配置一个容器,使其与另一个容器运行在同一个network namespace中,但通常不需要这样做。