docker -compose - изменение значений docker концентратора не работает? - PullRequest
1 голос
/ 11 января 2020

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

У меня есть мой файл композиции здесь:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

Это прямо из хаба docker. Но если я пытаюсь ввести свои собственные данные, например, вместо имени базы данных «wordpress», мы называем это «awordpress». Тогда все просто перестает работать, но почему?

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: awordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: awordpress
volumes:
    db_data: {}

Составьте вывод:

wordpress_1  | Complete! WordPress has been successfully copied to /var/www/html
wordpress_1  |
wordpress_1  | MySQL "CREATE DATABASE" Error: Access denied for user 'wordpress'@'%' to database 'awordpress'
wordpress_1  |
wordpress_1  | WARNING: unable to establish a database connection to 'db:3306'
wordpress_1  |   continuing anyways (which might have unexpected results)

И странно то, что он создает базу данных "wordpress" вместо моего вставленного " awordpress "через переменные окружения. Почему он «игнорирует» мою переменную и вместо этого создает это значение?

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

Цель - автоматическая настройка wordpress с моими собственными данными. Я уверен, что это что-то очень простое, я наблюдаю ... Извините, если это глупый вопрос. Я очень новичок в docker. Заранее спасибо!

1 Ответ

0 голосов
/ 11 января 2020

Образ mysql инициализируется из переменных среды при запуске в пустом каталоге данных.

Со страницы документации по изображению mysql на dockerhub (поиск " Переменные среды ")

Обратите внимание, что ни одна из приведенных ниже переменных не будет иметь никакого эффекта, если вы запустите контейнер с каталогом данных, который уже содержит базу данных: любая ранее существовавшая база данных всегда останется нетронутой при запуске контейнера.

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

У вас есть два варианта:

  1. самостоятельно создать / переименовать базу данных в существующей установке данных.
  2. перезапустить с нуля и позволить образу выполнить свою работу по инициализации. на новом чистом томе.

Второй вариант довольно просто сделать с помощью docker compose. Предупреждение: следующее удалит все предыдущие данные .

Сначала остановите все сервисы компоновки и , удалите связанные с ними docker тома:

docker-compose down -v

Затем перезапустите все, воссоздав все необходимые тома

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