Mysql в Docker Compose не принимает переменные окружения - PullRequest
0 голосов
/ 05 ноября 2019

Это мой файл docker-compose.yml, в котором указаны переменные среды (имя пользователя root, пароль и т. Д.). Однако, когда я запускаю «docker-compose up», он говорит, что MySQL инициализируется с пустым паролем!

Почему? Есть ли обходной путь?

Это docker-compose.yml

version: '3.3'

services:
  db:
    image: mysql:5.7
          #build: sqldocker
    ports:
           -  "3306:3306"
    environment:
           - MYSQL_ROOT_PASSWORD=123456
           - MYSQL_DATABASE=testdb
           - MYSQL_USER=root
           - MYSQL_PASSWORD=123456
             # volumes:
            # - my-datavolume:/var/lib/mysql
    healthcheck:
           test: ["CMD", "mysqladmin", "ping"]
           timeout: 20s
           retries: 10
    restart: always
  backendserver:
    build: ./docker-demo-backend/
    ports:
           - "8080:8080"
    links:
           - "db"
    depends_on:
           - "db"
             # restart: always
  frontend:
    build: ./docker-demo-frontend/frontcrud
    links:
           - "backendserver"
    depends_on:
           - "backendserver"
    ports:
           - "80:80"

Ответы [ 3 ]

0 голосов
/ 05 ноября 2019

Удалить MYSQL_PASSWORD AND MYSQL_USER

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

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

0 голосов
/ 05 ноября 2019

Когда вы использовали это изображение mysql/5.7, запуск делится на 2 шага.

Первый шаг - инициализация БД, и у вас появляется это сообщение

2019-11-05T15:01:23.167671Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

Но только после того, как БД остановлена ​​и перезапущена. и у вас больше нет предупреждения.

0 голосов
/ 05 ноября 2019

Пожалуйста, взгляните на предложенный обходной путь: Как использовать переменные среды в docker compose

Метод 2 предлагает способ определения файла .ENV, который содержит значения длятакого рода элементы (пароли). Это относится к PostgreSQL, но, похоже, может помочь. С уважением.

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