Wordpress контейнер просто работает по умолчанию - PullRequest
0 голосов
/ 03 января 2019

У меня вопрос, как именно docker-compose обрабатывает переменные окружения.

services:
  wp:
    image: wordpress:latest
    container_name: "wp"
    restart: unless-stopped
    links:
     - wpdb
    environment:
     - TZ=Europe/Berlin
     - WORDPRESS_DB_HOST=wpdb:3306
     - WORDPRESS_DB_USER=wordpress
     - WORDPRESS_DB_PASSWORD=password
     - WORDPRESS_DB_NAME=wp
    volumes:
     - ./data:/var/www/html
    labels:
     - "traefik.enable=true"
     - "traefik.backend=wp"
     - "traefik.frontend.rule=Host:MASKED"
     - "traefik.port=80"
     - "traefik.docker.network=web"
    networks:
     - internal
     - web
  wpdb:
    image: mariadb:latest
    restart: unless-stopped
    container_name: "wpdb"
    environment:
     - MYSQL_ROOT_PASSWORD=1234
     - MYSQL_USER=wordpress
     - MYSQL_PASSWORD=password
     - MYSQL_DATABASE=wp
   networks:
     - internal
   labels:
     - "traefik.enable=false"
   volumes:
     - ./sql:/var/lib/mysql
volumes:
  data:
  sql:
networks:
  web:
    external: true
  internal:

Композиционный файл прекрасно работает.Контейнеры будут созданы и работают отлично.

Но когда я изменяю настройки по умолчанию: WORDPRESS_DB_PASSWORD = пароль и MYSQL_PASSWORD = пароль.

Контейнер Wordpress выбрасывает доступ, запрещенный для пользователя.Я также пытался убить контейнер и тома.

Надеюсь, у меня есть подсказка.

1 Ответ

0 голосов
/ 04 января 2019

Вы должны сделать docker-compose down -v, который удалит именованные тома, объявленные в разделе томов. Единственным недостатком является то, что вы потеряете все данные, созданные службой в первый раз.

Вот как я мог это воспроизвести -

  1. Использовал ваш композитный файл в качестве справочного и в первый раз использовал упомянутый вами пароль по умолчанию. Сервисы работают нормально, я устанавливаю его и делаю Ctrl+C, чтобы отключить сервис. Таким образом, все данные MYSQL записываются в SQL с именем тома.

  2. Когда вы делаете Ctrl+C ИЛИ docker-compose down, он удаляет только контейнеры и сети, определенные в сервисе. Не тома. Подробнее об этом здесь

  3. Теперь, когда вы меняете пароль и восстанавливаете службу, она по-прежнему использует старые тома с вашим старым паролем.

  4. Поэтому используйте docker-compose down -v, чтобы удалить тома и попробовать.

Вот шаги, как я его воспроизвел Ctrl + C, чтобы остановить все службы, а затем обновите docker-compose.yml, чтобы обновить пароль, и снова выполните команду docker-compose up, чтобы получить ошибку об отказе в доступе. Step 1 - docker-compose down or ctrl+c

Выполните docker-compose down -v, чтобы очистить весь объем, а затем выполните docker-compose up. enter image description here При выполнении docker-compose down -v вы потеряете все данные, созданные предыдущей службой. Используйте это осторожно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...