データベースダンプマウントを設定する
ダンプにアクセスできるように、ダンプをコンテナにマウントする必要があります。 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-composeコマンドを使用してそれを呼び出すこともできます。または、エントリポイントスクリプトでダンプファイルが存在するかどうかを確認し、存在する場合は解凍してインポートすることもできます...必要なことは何でも。
railsサーバーを起動します
docker-compose up -d web
これを自動化する
新しいセットアップの準備のためにこれを手作業で行っている場合は、これで完了です。これをツールチェーンに自動化する必要がある場合は、スクリプトでこれらの作業の一部を実行できます。コンテナを個別に起動し、その間にdbインポートを実行して、sleep
を使用するだけです。 起動の遅延をカバーします。