2 изображения Drupal в одной машине - PullRequest
0 голосов
/ 24 апреля 2020

Описание: Я пытаюсь найти способ запустить 2 контейнера Drupal, используя docker compose на одной машине. В настоящее время у меня возникает проблема с «привязкой» каждого хранилища Drupal к отдельному местоположению в MySQL.

Вот следующий YAML-файл для Docker Состав:

---
version: '3'

services:
  drupal:
    build: ./
    image: geerlingguy/drupal:latest
    environment:
      DRUPAL_DATABASE_HOST: drupal-mysql
      DRUPAL_DATABASE_PORT: 3306
      DRUPAL_DATABASE_NAME: drupal
      DRUPAL_DATABASE_USERNAME: drupal
      DRUPAL_DATABASE_PASSWORD: drupal
      # Generate a salt with: `php -r "echo bin2hex(random_bytes(25));"`
      DRUPAL_HASH_SALT: db0de8a1556aa5348f87cfc950cd2c9641713d46e9412c8b05
    ports:
      #assign random port on the host
      - "80"
    depends_on:
      - mysql
    restart: always
    # new
    working_dir: /var/www/html
    # Uncomment the volumes line and set to the local path of your Drupal
    # installation, if you need to work with a local codebase.
    volumes:
      # - ~/Sites/drupal-container:/var/www/html:rw,delegated
      - /Sites/drupal-container:/var/www/html:rw,delegated

  drupal2:
    build: ./
    image: geerlingguy/drupal:latest
    environment:
      DRUPAL_DATABASE_HOST: drupal-mysql
      DRUPAL_DATABASE_PORT: 3306
      DRUPAL_DATABASE_NAME: drupal
      DRUPAL_DATABASE_USERNAME: drupal
      DRUPAL_DATABASE_PASSWORD: drupal
      # Generate a salt with: `php -r "echo bin2hex(random_bytes(25));"`
      DRUPAL_HASH_SALT: db0de8a1556aa5348f87cfc950cd2c9641713d46e9412c8b05
    ports:
      #assign random port on the host
      - "80"
    depends_on:
      - mysql
    restart: always
    working_dir: /var/www/html
    volumes:
      - /Sites/drupal-container2:/var/www/html:rw,delegated

  mysql:
    image: mysql:5.7
    container_name: drupal-mysql
    # new
    volumes:
      - /Sites/drupal-container:/var/lib/mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
      MYSQL_DATABASE: drupal
      MYSQL_USER: drupal
      MYSQL_PASSWORD: drupal
    ports:
      - "3306:3306"

networks:
    # Define the default network
    # Services will use this automatically without having a networks key
    default:
        external:
            name: macvlan_net

FYI сеть с именем macvlan _net определяется вручную вне файла YAML. (это позволяет мне получить доступ к контейнеру Drupal с использованием IP-адреса)

Проблема: когда я запускаю docker -compose, я получаю 2 контейнера Drupal: Drupal 1 - 132.177.14.1 Drupal 2 - 132.177.14.2

но, как только я запускаю первоначальную настройку на Drupal 1, Drupal 2, похоже, отражает ту настройку, которую я также сделал.

Ожидаемый результат: Я должен приветствовать первоначальную настройку при посещении Drupal 2.

1 Ответ

0 голосов
/ 27 апреля 2020

Поскольку вы используете один контейнер MySql для размещения баз данных для обоих экземпляров Drupal (контейнеров), вам необходимо убедиться, что вы используете уникальные имена баз данных в процессе установки Drupal. Поэтому во время установки вы можете попробовать:

  • Drupal 1 -> Имя базы данных: drupal_1_db
  • Drupal 2 -> Имя базы данных: drupal_2_db

Другие ваши варианты являются:

  • Использовать префиксы таблиц, определенные в дополнительных параметрах, вместо уникальных имен баз данных, но это не является необходимым, если у вас нет причин хранить оба сайта в одной схеме базы данных
  • Используйте отдельные mysql контейнеры для каждого экземпляра Drupal
...