Help us understand the problem. What is going on with this article?

Docker PostgreSQL公式イメージを使用してDBに初期データを流し込む

More than 1 year has passed since last update.

以前書いた

Docker MySQL公式イメージを使用してDBに初期データを流し込む
http://qiita.com/furu8ma/items/75e5b1df29fef04ec7f1

のPostgreSQL版です。
まったく同じ手順で初期データを流し込めます。

公式イメージのありか
https://hub.docker.com/_/postgres/

まずはdocker-compose.yml
個人的好みでalpine版を使っていますが、docker-entrypoint.shを見る限り debian版でも同じ挙動のはずです。
ただ、alpine版は約40MB, debian版は270MB...

docker-compose.yml
version: "3"
services:
  database:
    image: postgres:9.6-alpine
    volumes:
      - database:/var/lib/postgresql/data
      - ./postgres:/docker-entrypoint-initdb.d
    environment:
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=password
    ports:
        - 3306:3306

volumes:
    database:
      external: false

注意点としてpostgreSQLのデータ格納領域にvolumeを使用します。そうしないと docker for windowsの場合、postgreSQLが正常に起動しないためです。ホストOSがMacOSやLinux系なら直接ローカルディレクトリをマウントしても問題ないはずです。ホストOSのファイルシステムの違いのためでしょうか。Ubuntu on Windowsを使っても解決しないのがつらいところです。Microsoft先生よろしくお願いいたします。m(__)m

./postgres/にDBクリエイト用SQLやらインポート用シェルやらを置きます。
数字のプレフィクスをつけて実行順をコントロールするのもMySQLと同じHackです。

+ docker-commpose.yml
+- postgres/
    + 1_create_db.sql
    + 2_import.sh
    + dump1.gz
2_import.sh
cd /docker-entrypoint-initdb.d/
echo "import data1..."
gzip -dc ./dump1.gz | psql -h localhost -U root -d db1
echo "done."

注意点はDockerfileなりで~/.pgpassが事前に配置されていること

これで、docker-compose upで初回起動時にデータが投入されます。
MySQLのイメージと挙動が一緒というのがありがたし。

参考になれば。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした