Является ли вышеуказанный правильный метод? Это зависит от того, чего вы пытаетесь достичь. Если вы хотите разделить эти экземпляры и оставить данные разделенными, то да, это правильный путь. С другой стороны, если вы пытаетесь минимизировать усилия по управлению экземплярами MySQL, это не так.
Если вы хотите иметь один экземпляр MySQL, вам нужно позаботиться о создании пользователей и баз данных (вы не можете использовать переменные env, такие как «MYSQL_USER», более одного раза). Одним из способов управления пользователями и базами данных является создание bootstrap файлов, как показано ниже.
sql -скриптов. sql
# create databases
CREATE DATABASE IF NOT EXISTS `wordpressdb`;
CREATE DATABASE IF NOT EXISTS `joomladb`;
CREATE USER 'sqlusr'@'%' IDENTIFIED BY 'sqlusr_pass';
GRANT ALL PRIVILEGES ON *.* TO 'sqlusr'@'%';
Dockerfile
FROM mysql:8.0.1
COPY ./sql-scripts.sql /docker-entrypoint-initdb.d/
MySQL compose
version: '3.7'
services:
mysql:
image: mysqlx
restart: always
environment:
MYSQL_ROOT_PASSWORD: dummy
MYSQL_DATABASE: soso
MYSQL_USER: soso
MYSQL_PASSWORD: soso
restart: always
container_name: yt_test_mysql_joomla
на примере выше, контейнер MySQL будет иметь три базы данных (soso, wordpressdb, joomladb).
Обратите внимание, что если вы разбить службы на разные файлы, которые вам могут понадобиться для настройки сети на контейнерах, чтобы обеспечить связь между контейнерами