У меня есть файл docker-compose.yml со следующим:
populated_db:
container_name: populated_db
restart: always
image: mysql
volumes:
- ./test_database.sql:/docker-entrypoint-initdb.d/a.sql
- populated_test_db:/var/lib/mysql
ports:
- "33061:3306"
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "true"
MYSQL_DATABASE: aaaa
MYSQL_USER: aaaa
MYSQL_PASSWORD: aaaa
db:
container_name: db
image: mysql
ports:
- "33060:3306"
volumes:
- type: volume
source: populated_test_db
target: /var/lib/mysql
volume:
nocopy: false
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "true"
MYSQL_DATABASE: aaaa
MYSQL_USER: aaaa
MYSQL_PASSWORD: aaaa
depends_on:
- populated_db
volumes:
populated_test_db:
Контейнер populated_db успешно запускается и заполняет базу данных содержимым test_database.sql. Однако после этого контейнер db запускается и пытается использовать populated_test_db как свой / var / lib / mysql, вызывая следующую ошибку:
Unable to lock ./ibdata1 error: 11
Check that you do not already have another mysqld process using the same InnoDB data or log files.
Предположительно это связано с тем, что контейнер populated_db все еще работает. Как я могу остановить его работу после заполнения тома, чтобы контейнер db мог использовать заполненный том?
@ThatGuyInIT, который объясняет, как заполнить контейнер Docker MySQL, но я уже могу это сделать.
Вы можете добавить в свой скрипт заполнения выход, который остановит заполнение контейнера; однако вам, вероятно, также потребуется проверить файл pid из другого контейнера, прежде чем пытаться запустить MySQL, поскольку оба контейнера будут запускаться одновременно. Кажется, что у меня много кладжа, и каждый раз, когда я сталкиваюсь с большим количеством кладжа, чтобы заставить что-то работать, я обычно второй раз смотрю на свой подход и смотрю, может быть, что-то мне не хватает.
Как насчет этого? Он заполняет mysql во время сборки контейнера. github.com/lindycoder/prepopulated-mysql-container-example
@ThatGuyInIT, который выглядит именно так, как я искал, спасибо!






Это может помочь stackoverflow.com/questions/29145370/…