1+ version : " 3"
2+
3+ services :
4+ mysql :
5+ environment :
6+ MYSQL_ROOT_PASSWORD : ${DB_ROOT_PASSWORD}
7+ MYSQL_USER : ${DB_USER}
8+ MYSQL_PASSWORD : ${DB_PASSWORD}
9+ MYSQL_DATABASE : ${DB_DATABASE}
10+ container_name : ${MYSQL_name}
11+ image : mysql:8.3.0
12+ healthcheck :
13+ test : ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
14+ interval : 20s
15+ timeout : 20s
16+ retries : 2
17+ start_period : 0s
18+ volumes :
19+ # Preload files for MySQL data
20+ - ./mysql:/docker-entrypoint-initdb.d:z
21+ # We have to save MySQL volume that will be used in upgrade
22+ - dbdata:/var/lib/mysql
23+ networks :
24+ - backend
25+
26+ # Sidecar for dumping files
27+ mariadb-dump :
28+ environment :
29+ MARIADB_ROOT_PASSWORD : ${DB_ROOT_PASSWORD}
30+ MARIADB_USER : ${DB_USER}
31+ MARIADB_PASSWORD : ${DB_PASSWORD}
32+ container_name : ${MARIADB_DUMP_name}
33+ image : mariadb:lts
34+ depends_on :
35+ mysql :
36+ condition : service_healthy
37+ healthcheck :
38+ test : ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
39+ start_period : 10s
40+ interval : 20s
41+ timeout : 20s
42+ retries : 3
43+ # command: >
44+ # bash -c "
45+ # echo 'MariaDB service started. Dump MySQL data ...'
46+ # mariadb-dump -h mysql-container -uroot -psecret testdb > /etc/dump/mysql-dump-data.sql"
47+ # user: ${UID}:${EUID}
48+ volumes :
49+ - mysqldump:/etc/dump/
50+ # This will not exit container, but command: will
51+ - ./dump-mysql.sh:/docker-entrypoint-initdb.d/dump-mysql.sh
52+ networks :
53+ - backend
54+ # entrypoint: ["/docker-entrypoint-initdb.d/dump-mysql.sh"]
55+
56+ # We cannot share the same dump directory, we need to stop mariadb-dump
57+ stopper :
58+ image : docker:20.10
59+ depends_on :
60+ mariadb-dump :
61+ condition : service_healthy
62+ volumes :
63+ - /var/run/docker.sock:/var/run/docker.sock
64+ command : ["sh", "-c", "docker stop mariadb-container-dump"]
65+
66+ # Sidecar for insert dump file
67+ mariadb-migrated-from-mysql8 :
68+ environment :
69+ MARIADB_ROOT_PASSWORD : ${DB_ROOT_PASSWORD}
70+ MARIADB_USER : ${DB_USER}
71+ MARIADB_PASSWORD : ${DB_PASSWORD}
72+ container_name : ${MARIADB_MIGRATED_name}
73+ image : mariadb:lts
74+ depends_on :
75+ mariadb-dump :
76+ condition : service_completed_successfully
77+ volumes :
78+ - mysqldump:/etc/dump/
79+ - ./migrate-mariadb.sh:/docker-entrypoint-initdb.d/migrate-mariadb.sh
80+ networks :
81+ - backend
82+
83+ volumes :
84+ dbdata : {}
85+ # sudo chown -R 999:999 ${PWD}/dump-data # host
86+ mysqldump :
87+ driver : local
88+ driver_opts :
89+ type : none
90+ device : " ${PWD}/dump-data"
91+ o : bind
92+
93+ networks :
94+ backend:
0 commit comments