another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему контейнер с MySQL не хочет подхватывать enviroment переменные из docker-compose.yml?

docker-compose.yml

# Версия docker-compose
version: '3'

# Контейнеры
services:
  # MySQL
  mysql:
    image: mysql
    restart: always
    ports:
      - '3306:3306'
    volumes:
      # Хранилище баз данных
      - './database:/var/lib/mysql'
    environment:
      MYSQL_ROOT_PASSWORD: 4k2jk3kjk
  # PhpMyAdmin
  pma:
    image: phpmyadmin/phpmyadmin
    restart: always
    # Линкуем с MySQL
    links:
      - 'mysql:mysql'
    ports:
      - '8183:80'
    environment:
      PMA_HOST: mysql
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: 4k2jk3kjk



По итогу запуска контейнеров и попытке авторизации в mysql через консоль или PMA - пароль для рута не меняется, всегда root.
В чём тут дело может быть?

Из конфига уже всё лишнее вынес, удалял images (rmi) и сами контейнеры (rm), пересоздавал всё это несколько раз -- толку ноль.
  • Вопрос задан
  • 692 просмотра
Решения вопроса 1
Root пароль устанавливается только при "первом запуске" контейнера. Если файлы с данным mysql уже существуют (в вашем случае тут - "./database"), то эта переменная будет игнорироваться.

Соответственно решением будет изменение пароля вручную либо удаление существующих файлов mysql (с последующим запуском контейнера с нужным вам паролем в MYSQL_ROOT_PASSWORD).

Удаление контейнеров и образов бесполезно, т.к. директория с данными бд монтируется в контейнер с хост машины.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы