Обновление MySQL базы Docker
Ранее не работал с Docker и еще не до конца понимаю принцип его работы.
В контейнере на докере я запустил mysql сервер, phpmyadmin и metabase.
База MySQL, которая находится в /var/lib/mysql постоянно обновляется, но в Docker это хранится в отдельном каталоге, по пути: /var/lib/docker/volumes/metabase_dbdata/_data
При перезапуске Docker командой docker-compose up -d он не обновляет базу в /var/lib/docker/volumes/metabase_dbdata/_data, а именно её я вижу в PMA.
Мне нужно, чтобы при каждом перезапуске (docker-compose up -d) он сопостовлял данные из /var/lib/docker/volumes/metabase_dbdata/_data с данными из /var/lib/mysql и обновлял их
Возможно, я неправильно понял принцип работы Docker или использую не ту команду?
docker-compose.yml
version: '3.1'
services:
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: ####
MYSQL_DATABASE: ###
MYSQL_USER: ####
MYSQL_PASSWORD: ###
ports:
- "6033:3306"
volumes:
- dbdata:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: pma
links:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8081:80
environment:
MB_SITE_URL: http://localhost:8081/pma/
metabase:
image: metabase/metabase:latest
ports:
- "127.0.0.1:3025:3025"
volumes:
- data:/metabase
environment:
MB_SITE_URL: http://localhost:3000/metabase/
volumes:
dbdata:
data:
Ответы (1 шт):
Здесь Связь сервисов в docker-compose есть варианты того, как можно объединить docker-контейнеры в сеть. Если объединять контейнеры через links, то у metabase тоже должна быть ссылка на БД. И для links и для network обращение к другому контейнеру выполняется по доменному имени (имени контейнера) и порту, например, phpmyadmin:80.
Соответственно, нужно связать metabase с mysql, например так:
version: '3.1'
services:
db:
image: mysql:8.0
container_name: db
environment:
MYSQL_ROOT_PASSWORD: dbmetabaserootpassword
MYSQL_DATABASE: metabase
MYSQL_USER: metabase
MYSQL_PASSWORD: metabasedatabasepassword
ports:
- 6033:3306
volumes:
- dbdata:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: pma
links:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8081:80
metabase:
image: metabase/metabase:latest
ports:
- 3001:3000
volumes:
- data:/metabase
environment:
MB_DB_TYPE: mysql
MB_DB_DBNAME: metabase
MB_DB_PORT: 3306
MB_DB_USER: metabase
MB_DB_PASS: metabasedatabasepassword
MB_DB_HOST: db
depends_on:
- db
links:
- db
volumes:
dbdata:
data:
P.S. Пример переменных окружения взял отсюда Docker compose for metabase and mysql, сам с metabase не работал.