Настройте монтиране на дъмп на база данни
Ще трябва да монтирате дъмпа в контейнера, за да имате достъп до него. Нещо подобно в docker-compose.yml:
db:
volumes:
- './db_dump:/db_dump'
Създайте локална директория с име db_dump
и поставете своя db_dump.gz
файл там.
Стартирайте контейнера на базата данни
Използвайте POSTGRES_DB
в средата (както споменахте във вашия въпрос), за да създадете автоматично базата данни. Стартирайте db
самостоятелно, без rails сървъра.
docker-compose up -d db
Импортиране на данни
Изчакайте няколко секунди, докато базата данни стане достъпна. След това импортирайте вашите данни.
docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz
Можете също така просто да направите скрипт, за да направите това импортиране, да го поставите в изображението си и след това да използвате една единствена команда за съставяне на docker, за да го извикате. Или можете да накарате вашия скрипт за входна точка да провери дали има дъмп файл и ако е така, да го разархивирате и импортирате... каквото трябва да направите.
Стартирайте rails сървъра
docker-compose up -d web
Автоматизиране на това
Ако правите това на ръка за подготовка на нова настройка, значи сте готови. Ако трябва да автоматизирате това във верига от инструменти, можете да направите някои от тези неща в скрипт. Просто стартирайте контейнерите поотделно, извършвайки db импортиране между тях и използвайте sleep
за покриване на всички забавяния при стартиране.