невозможно подключиться к моей БД с 2-мя экземплярами WordPress - рой отключен? - PullRequest
0 голосов
/ 31 марта 2019

Я установил 2 узла, один хост докер + трафик для 2 экземпляров WordPress.Я хочу, чтобы мои экземпляры были доступны одновременно с двумя отдельными доменными именами.Используются 3 файла docker-compose: 1 для traefik - 1 внешняя сеть (NW1) 1 для стека wordpress 1 (домен1) - (NW1 + внутренний NW2) 1 для стека wordpress 2 (domain2) - (NW1 + внутренний NW3)

В настоящее время у меня путаница между базами данных, возможно, из-за сети: если я запускаю WordPress 1 compose-файл -> все в порядке,.Я начинаю wordpress 2: wordpress 1 база данных больше не используется wordpress1.Я прекращаю docker-compose wordpress2, снова wordpress1 доступ к БД и могу подключиться к wp-admin как обычно.

Конечно, я создал 2 отдельные внутренние сети для БД wp1 и БД wp2, которые я проверял с помощью inspect,

Бэкэнд-сеть Wordpress 1 1: «Подсеть»: «172.18.0.0/16», «Шлюз»: «172.18.0.1»;wordpress 2 Бэкэнд-сеть 2: «Подсеть»: «192.168.80.0/20», «Шлюз»: «192.168.80.1»

Как сделать так, чтобы мои 2 экземпляра Wordpress были изолированы и работали одновременно?

Я пытался изменить сеть (используя мост или хост), используя внутренние флаги, создавая внешнюю сеть или используя Docker-compose сеть и т. Д. ... Ничего не изменилось ...

Примерконфигурация стека WordPress (файл YML):

version: '3'

networks:
  #domain2internal:
  #  driver: bridge
  #  external: false
  #  internal: true
 domain2internal:
    external:
      name: domain2
 prometheus:
    external:
      name: dockerprometheus_back-tier

services:

  domain2db:
    container_name: domain2db
    image: 'mariadb:latest'
    volumes:
      - '/storage/db/domain2:/var/lib/mysql'
     # - '/storage/db/prometheus/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf'
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=xxxx
      - MYSQL_USER=mariadb_wp
      - MYSQL_PASSWORD=xxx
      - MYSQL_DATABASE=domain2_wp
#      - DB_PATH_HOST=/storage/db/domain2
    #  - ALLOW_EMPTY_PASSWORD=yes
    expose:
      - 3306
    networks:
      - domain2internal

  wpdomain2wp:
    image: 'wordpress:latest'

  wpdomain2wp:
    image: 'wordpress:latest'
    volumes:
      - '/storage/www/www.domain2.asia:/var/www/html'
      - './uploads.ini:/usr/local/etc/php/conf.d/uploads.ini'
      - /etc/passwd:/etc/passwd:ro
      - /etc/group:/etc/group:ro
      #- './wp-content:/var/www/html/wp-content'
    depends_on:
      - domain2db
    environment:
      - WORDPRESS_DB_HOST=domain2db
      - WORDPRESS_DB_PORT_NUMBER=3306
      - WORDPRESS_DB_USER=mariadb_wp
      - WORDPRESS_DB_PASSWORD=xxxxxx
      - WORDPRESS_DB_NAME=domain2_wp
      - MYSQL_PORT_3306_TCP=3306
    working_dir: /var/www/html
    labels:
      - "traefik.entrypoint=https"
      - "traefik.frontend.rule=Host:www.domain2.asia, domain2.co, project.domain2.asia"
      - "traefik.frontend.redirect.regex=^https?://domain2.asia/(.*)"
      - "traefik.frontend.redirect.replacement=https://www.domain2.asia/$${1}"
      - "traefik.frontend.redirect.permanent=true"
      - "traefik.backend=wordpress"
      - "traefik.docker.network=prometheus"
      - "traefik.enable=true"
      - traefik.port=80
    networks:
      - prometheus
      - domain2internal
    restart: unless-stopped

1 Ответ

0 голосов
/ 02 апреля 2019

Чтобы устранить эту проблему, я предлагаю вам зайти в свою оболочку Wordpress и использовать инструменты командной строки Linux для проверки DNS и соединения с вашей базой данных.Оставайтесь в оболочке, убедитесь, что он может разрешить и подключиться проверить IP.Повторите второй, повторите то же самое и посмотрите, что сломано, разрешение имен, другой IP, тот же IP, но порт закрыт и т. Д. - сузьте проблему.

Вполне вероятно, что когда вы скопировали свою конфигурацию длявторой экземпляр, который вы забыли изменить в нем, чтобы оба экземпляра имели один и тот же «объект», который они не должны совместно использовать.

...