Я пытаюсь создать docker-compose
с MariaDB и phpMyAdmin Docker изображений, однако у меня возникают следующие проблемы: ни MariaDB, ни phpMyAdmin не используют среду переменные внутри их файлов, другими словами, MariaDB не устанавливает пароль по умолчанию, описанный в переменной MYSQL_ROOT_PASSWORD, а phpMyAdmin не может подключиться к MariaDB, даже если я вручную установил новый пароль для MariaDB.
На терминале MariaDB показывает следующий вывод, когда я запускаю docker compose за один раз:
dgi_catalog_db | PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
dgi_catalog_db | To do so, start the server, then issue the following commands:
dgi_catalog_db |
dgi_catalog_db | '/usr/bin/mysqladmin' -u root password 'new-password'
dgi_catalog_db | '/usr/bin/mysqladmin' -u root -h password 'new-password'
dgi_catalog_db |
dgi_catalog_db | Alternatively you can run:
dgi_catalog_db | '/usr/bin/mysql_secure_installation'
[...]
dgi_catalog_db | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Когда я пытаюсь подключиться к MariaDB через phpMyAdmin без установки пароля по умолчанию, следующее сообщение показывает:
mysqli_real_connect(): (HY000/2002): Connection refused
Затем я попадаю в контейнер и устанавливаю новый пароль вручную:
$ docker exec -it dgi_catalog_db /bin/bash
# mysqladmin -u root password 'password'
Если я пытаюсь снова подключиться через phpMyAdmin, я снова получаю ту же ошибку:
mysqli_real_connect(): (HY000/2002): Connection refused
Затем я попытался перезапустить свои контейнеры и снова подключиться через phpMyAdmin, и они показывают следующие сообщения:
- phpMy Админ в веб-интерфейсе:
Packets out of order. Expected 0 received 1. Packet size=69
mysqli_real_connect(): Error while reading greeting packet. PID=35
mysqli_real_connect(): (HY000/2006): MySQL server has gone away
dgi_catalog_db | 2020-01-15 12:36:36 8 [Warning] Aborted connection 8 to db: 'unconnected' user: 'unauthenticated' host: '172.29.0.3' (This connection closed normally without authentication)
Я уже пробовал некоторые решения на inte rnet (например, это один ), но я не смог решить проблему.
Я использую Ubuntu 16.04.6 LTS и отправляю свои файлы ниже.
Может ли кто-нибудь помочь мне, пожалуйста? Заранее спасибо.
структура проекта
У меня есть папка с именем catalog
со следующей структурой:
.
├── docker-compose.yml
└── env_files
├── db.env
└── phpmyadmin.env
Файлы описано позже.
docker -compose.yml:
version: '3'
services:
dgi_catalog_db:
container_name: dgi_catalog_db
image: mariadb:10.4.11
restart: always
volumes:
- ../data/mysqldata:/var/lib/mysql
env_file:
- ./env_files/db.env
networks:
- dgi_catalog
ports:
- 3311:3306
dgi_catalog_admin:
container_name: dgi_catalog_admin
image: phpmyadmin/phpmyadmin:4.9
restart: always
env_file:
- ./env_files/phpmyadmin.env
networks:
- dgi_catalog
ports:
- 8099:80
networks:
dgi_catalog:
driver: bridge
../data/mysqldata
Том может быть другой папкой.
./env_files/db.env
MYSQL_ROOT_PASSWORD=password
. / env_files / phpmyadmin.env
PMA_HOST=dgi_catalog_db
PMA_ARBITRARY=1
РЕДАКТ. 1:
Я не нашел решения, но думаю, что обнаружил главную проблему: MariaDB очень долго инициализируется. Через 20 минут после инициализации docker составьте, MariaDB напечатал mysqld: ready for connections.
, и мне удалось подключиться к моей базе данных через phpMyAdmin.
dgi_catalog_db | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
dgi_catalog_db | 2020-01-15 14:06:41 10 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db | 2020-01-15 14:06:41+00:00 [Note] [Entrypoint]: Stopping temporary server
[...]
dgi_catalog_db | 2020-01-15 14:06:49 0 [Warning] 'proxies_priv' entry '@% root@fbbf075da453' ignored in --skip-name-resolve mode.
dgi_catalog_db | 2020-01-15 14:06:49 0 [Note] Reading of all Master_info entries succeeded
dgi_catalog_db | 2020-01-15 14:06:49 0 [Note] Added new Master_info '' to hash table
dgi_catalog_db | 2020-01-15 14:06:49 0 [Note] mysqld: ready for connections.
dgi_catalog_db | Version: '10.4.11-MariaDB-1:10.4.11+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
dgi_catalog_db | 2020-01-15 14:06:49 0 [Note] InnoDB: Buffer pool(s) load completed at 200115 14:06:49
Существует открытая проблема в Github об этом. Очевидно, что если я использую переменную -e MYSQL_INITDB_SKIP_TZINFO=1
, MariaDB будет инициализироваться быстрее, но у меня не будет информации о часовом поясе.