Einen Datenbank-Dump-Mount einrichten
Sie müssen den Dump in den Container mounten, damit Sie darauf zugreifen können. So etwas in docker-compose.yml:
db:
volumes:
- './db_dump:/db_dump'
Erstellen Sie ein lokales Verzeichnis mit dem Namen db_dump
und platzieren Sie Ihre db_dump.gz
dort ablegen.
Datenbankcontainer starten
Verwenden Sie POSTGRES_DB
in der Umgebung (wie Sie in Ihrer Frage erwähnt haben), um die Datenbank automatisch zu erstellen. Starten Sie db
allein, ohne den Rails-Server.
docker-compose up -d db
Daten importieren
Warten Sie einige Sekunden, bis die Datenbank verfügbar ist. Importieren Sie dann Ihre Daten.
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
Sie können auch einfach ein Skript erstellen, um diesen Import durchzuführen, es in Ihr Bild einfügen und es dann mit einem einzigen docker-compose-Befehl aufrufen. Oder Sie können Ihr Einstiegsskript prüfen lassen, ob eine Dump-Datei vorhanden ist, und wenn ja, entpacken und importieren ... was auch immer Sie tun müssen.
Starten Sie den Rails-Server
docker-compose up -d web
Dies automatisieren
Wenn Sie dies zur Vorbereitung eines neuen Setups von Hand tun, sind Sie fertig. Wenn Sie dies in einer Toolchain automatisieren müssen, können Sie einige dieser Dinge in einem Skript erledigen. Starten Sie einfach die Container separat, führen Sie den DB-Import dazwischen durch und verwenden Sie sleep
um eventuelle Startverzögerungen abzudecken.