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

这意味着 containerscompose 不会默认位于 bridge network 中。

您可以通过命令查看containerscompose正在使用哪个网络。

docker inspect $container_name -f "{{.NetworkSettings.Networks}}"

但是,如果您希望 containers 默认为 bridge network,您可以使用 network_mode.

services:
    service_name:
        # other options....
        network_mode: bridge