服务“nginx-proxy”使用未定义的网络“nginx-proxy”

Jay*_*Jay 0 nginx docker docker-compose docker-container jwilder-nginx-proxy

我正在尝试使用Nginx-Proxy在 Ubuntu VPS 上的 docker 容器内运行 WordPress 网站。

我创建了以下docker-compose.yml文件


version: '3.4'
services:

  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - 80:80
      - 443:443
    restart: always
    networks:
      - nginx-proxy
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro
      - /etc/certificates:/etc/nginx/certs

  wordpress:
    image: wordpress
    container_name: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      - VIRTUAL_HOST=wordpress.domain.com
      - VIRTUAL_PORT=5500
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=db_username
      - WORDPRESS_DB_PASSWORD=db_password
      - WORDPRESS_DB_NAME=db_name
    depends_on:
      - nginx-proxy
      - db
    networks:
      - nginx-proxy
    volumes:
      - wordpress:/var/www/html
    ports:
      - 5500:5500
    expose:
      - 5500
  db:
    image: mysql:latest
    container_name: db
    restart: always
    environment:
       MYSQL_DATABASE: db_name
       MYSQL_USER: db_username
       MYSQL_PASSWORD: db_password
       MySQL_RANDOM_ROOT_PASSWORD: '1'
    depends_on:
      - nginx-proxy
    networks:
      - nginx-proxy
    volumes:
      - db:/var/lib/mysql
    ports:
      - 5600:5600
    expose:
      - 5600
volumes:
   wordpress:
   db:
Run Code Online (Sandbox Code Playgroud)

每次运行时docker-compose up都会出现以下错误

服务“nginx-proxy”使用未定义的网络“nginx-proxy”

我使用以下命令创建了一个网络

docker network create nginx-proxy
Run Code Online (Sandbox Code Playgroud)

这是输出docker network ls

在此输入图像描述

为什么我会收到该错误?我该如何修复它?

Dav*_*aze 5

您在每个服务networks:块中命名的任何内容都需要在顶级networks:块中声明。

version: '3.4'
services:
  nginx-proxy:
    networks:
      - nginx-proxy # <-- matches below
volumes: { ... }
networks:
  nginx-proxy:      # <-- matches above
    # may be empty, but this block is required
Run Code Online (Sandbox Code Playgroud)

networks:如果您根本没有声明任何内容,Compose会创建一个名为 的网络default并将容器附加到它。对于几乎所有用途,这都是您所需要的。因此,完全删除这些networks:块可能会更简单。

version: '3.4'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    # No networks:; just use automatic [default]
Run Code Online (Sandbox Code Playgroud)

(同样,您不需要手动向Compose 级别的端口提供container_name:, 或。)expose: