【问题标题】:Docker container, connect to each others databases, Nginx proxy and WordPressDocker 容器,连接到彼此的数据库、Nginx 代理和 WordPress
【发布时间】:2021-02-23 09:50:11
【问题描述】:

我试图弄清楚 docker network 和那种东西是如何工作的。 所以这是我的设置,我有 2 个带有 WordPress 和 mysql 的 docker 容器。这两个需要能够通过直接的数据库连接相互交谈。我也有指向它们的域。 因此,我尝试使用 docker nginx 代理对其进行设置,但是当我尝试通过域访问该站点时,我得到了 502 bat 网关。

所以我的 docker ngxinx 代理撰写文件看起来像这样,但端口不同:

version: "3.1"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./certs:/etc/nginx/certs
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: unless-stopped
networks:
  default:
    external:
      name: nginx-proxy

我的两个 WordPress 容器看起来都是这样的:

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
      VIRTUAL_HOST: wp1.local
      VIRTUAL_PORT: 3000
    volumes:
      - ./wp:/var/www/html
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    expose:
      - 3000

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql
    ports:
      - "8086:3306"

  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025" # smtp server
      - "8025:8025" # web ui

networks:
  default:
    external:
      name: nginx-proxy

volumes:
  db:

我已将 127.0.0.1 wp1 添加到 /etc/hosts

但是当我启动代理和其中一个 WP 容器时,我的网关出现问题。我不知道如何前进。也许这甚至不是正确的方法。因为我要解决的问题是 wp2 需要能够通过自定义 pdo 连接连接到 wp1 数据库。

我试图尽可能地解释清楚,但这对我来说是一个关于 docker 网络的新领域。另外我正在使用 wsl2 为 windows 运行 docker

【问题讨论】:

    标签: wordpress docker nginx docker-compose


    【解决方案1】:

    你应该添加

    networks: 
     - default
    

    到 docker-compose 中的每个服务定义。

    version: '3.1'    
    
    services:
    
      wordpress:
        image: wordpress
        restart: always
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: exampleuser
          WORDPRESS_DB_PASSWORD: examplepass
          WORDPRESS_DB_NAME: exampledb
          VIRTUAL_HOST: wp1.local
          VIRTUAL_PORT: 3000
        volumes:
          - ./wp:/var/www/html
          - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
        expose:
          - 3000
        networks:
          - default
    
      db:
        image: mysql:5.7
        restart: always
        environment:
          MYSQL_DATABASE: exampledb
          MYSQL_USER: exampleuser
          MYSQL_PASSWORD: examplepass
          MYSQL_RANDOM_ROOT_PASSWORD: '1'
        volumes:
          - db:/var/lib/mysql
        ports:
          - "8086:3306"
        networks:
          -default
    
      mailhog:
        image: mailhog/mailhog
        ports:
          - "1025:1025" # smtp server
          - "8025:8025" # web ui
        networks:
          - default
    
    networks:
      default:
        external:
          name: nginx-proxy
    
    volumes:
      db:
    

    【讨论】:

      猜你喜欢
      • 2016-04-17
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多