docker 构建 nginx 反向代理而不是将容器添加到 docker0 网桥
docker compose up nginx reverse proxy not adding containers to docker0 bridge
在我执行 docker-compose up
后,它会启动容器。
当我执行 docker ps
时,我得到以下信息,它告诉我容器是 运行ning。但是,当我执行 docker network inspect bridge
时,结果显示 docker0
桥中没有容器部分。
当我执行 docker 运行 meanchat_myserver
它实际上确实显示在 docker0
上并且我也得到了服务器是 运行宁 port 3000
。
我没有通过使用 docker-compose
得到。
我在这里做错了什么?
我读到,当我使用 docker0
时,我只能参考 IP 来连接到其他容器,而不是名称。我可以假设 ip 在容器上没有变化,并且在生产环境中部署应用程序时没有问题吗?
02cf08b1c3da d57f06ba9c68 "npm start" 33 minutes ago Up 33 minutes 4200/tcp meanchat_client_1
e257063c9e21 meanchat_myserver "npm start" 33 minutes ago Up 33 minutes 3000/tcp meanchat_myserver_1
02441c2e43f5 e114a298eabd "npm start" About an ago Up 33 minutes 0.0.0.0:80->80/tcp meanchat_nginx_1
88d9841d2553 mongo "docker-entrypoint..." 3 hours ago Up 3 hours 27017/tcp meanchat_mongo_1
撰写
version: '3'
services:
# Build the container using the client Dockerfile
client:
build: ./
# This line maps the contents of the client folder into the container.
volumes:
- ./:/usr/src/app
myserver:
build: ./express-server
volumes:
- ./:/usr/src/app
depends_on:
- mongo
nginx:
build: ./nginx
# Map Nginx port 80 to the local machine's port 80
ports:
- "80:80"
# Link the client container so that Nginx will have access to it
mongo:
environment:
- AUTH=yes
- MONGO_INITDB_ROOT_USERNAME=superAdmin
- MONGO_INITDB_ROOT_PASSWORD=admin123
- MONGO_INITDB_DATABASE=d0c4ae452a5c
image: mongo
volumes:
- /var/mongodata/data:/data/db
By default Compose sets up a single network for your app.
有关详细信息,请参阅此 link。
这意味着 containers
和 compose
不会默认位于 bridge network
中。
您可以通过命令查看containers
和compose
正在使用哪个网络。
docker inspect $container_name -f "{{.NetworkSettings.Networks}}"
但是,如果您希望 containers
默认为 bridge network
,您可以使用 network_mode.
services:
service_name:
# other options....
network_mode: bridge
在我执行 docker-compose up
后,它会启动容器。
当我执行 docker ps
时,我得到以下信息,它告诉我容器是 运行ning。但是,当我执行 docker network inspect bridge
时,结果显示 docker0
桥中没有容器部分。
当我执行 docker 运行 meanchat_myserver
它实际上确实显示在 docker0
上并且我也得到了服务器是 运行宁 port 3000
。
我没有通过使用 docker-compose
得到。
我在这里做错了什么?
我读到,当我使用 docker0
时,我只能参考 IP 来连接到其他容器,而不是名称。我可以假设 ip 在容器上没有变化,并且在生产环境中部署应用程序时没有问题吗?
02cf08b1c3da d57f06ba9c68 "npm start" 33 minutes ago Up 33 minutes 4200/tcp meanchat_client_1
e257063c9e21 meanchat_myserver "npm start" 33 minutes ago Up 33 minutes 3000/tcp meanchat_myserver_1
02441c2e43f5 e114a298eabd "npm start" About an ago Up 33 minutes 0.0.0.0:80->80/tcp meanchat_nginx_1
88d9841d2553 mongo "docker-entrypoint..." 3 hours ago Up 3 hours 27017/tcp meanchat_mongo_1
撰写
version: '3'
services:
# Build the container using the client Dockerfile
client:
build: ./
# This line maps the contents of the client folder into the container.
volumes:
- ./:/usr/src/app
myserver:
build: ./express-server
volumes:
- ./:/usr/src/app
depends_on:
- mongo
nginx:
build: ./nginx
# Map Nginx port 80 to the local machine's port 80
ports:
- "80:80"
# Link the client container so that Nginx will have access to it
mongo:
environment:
- AUTH=yes
- MONGO_INITDB_ROOT_USERNAME=superAdmin
- MONGO_INITDB_ROOT_PASSWORD=admin123
- MONGO_INITDB_DATABASE=d0c4ae452a5c
image: mongo
volumes:
- /var/mongodata/data:/data/db
By default Compose sets up a single network for your app.
有关详细信息,请参阅此 link。
这意味着 containers
和 compose
不会默认位于 bridge network
中。
您可以通过命令查看containers
和compose
正在使用哪个网络。
docker inspect $container_name -f "{{.NetworkSettings.Networks}}"
但是,如果您希望 containers
默认为 bridge network
,您可以使用 network_mode.
services:
service_name:
# other options....
network_mode: bridge