Docker composeでPostgresをさくっと動かす方法を徹底解説

今回はDocker composeを使ってPostgresを動かす方法をご紹介します。

DockerでPostgresを動かすことによって、何度でも同じ環境をリセットできたり、最低限のアプリケーションが動くデータが入ったDBをチームのメンバーに配布できたりすることができます。

DBが壊れた!!なんて心配もいりません。

Docker起動時に、DB構築や、データの登録をしておきたいことがほとんどだと思うので、そのやり方も徹底解説します!

前提

  • Dockerがインストールされていること

サンプル

  • docker-compose.yaml
version: "3"

services:
  postgres:
    build: ../postgres
    image: test_postgres
    container_name: test_postgres
    restart: always
    environment:
DB: postgres
DB_USER: postgres TZ: "Asia/Tokyo" ports: - 5433:5432

各項目の意味は以下の通りです。

version 1.x〜3.x で指定可能です。基本は3で問題ありません。特定バージョンでしか動かない機能はマイナーバージョンの指定、3以外のバージョンの指定が必要になります。
services 立ち上げるコンテナの情報をservices配下のブロックに書きます。複数記載可能です。
build Dockerfile のあるディレクトリのパスを指定します。
image タグや image ID の一部です。ローカルでもリモートでも構いません。ローカルに存在しなければ、Compose はイメージを取得(pull)します。
container_name コンテナ名を指定します。
restart restart: alwaysと指定することで、OS起動時にコンテナを自動起動してくれます。
environment 環境変数を追加します。
ports 接続するportを指定します。上記の例だと5433でDB接続可能です。
  • Dockerfile
FROM postgres:11-alpine

COPY ./sql/*.sql /docker-entrypoint-initdb.d/

上記のようにDockerfileにコマンドを記載しておくとDockerの起動時に実行してくれます。
上記では、Dockerfileと同じディレクトリにsqlというディレクトリを作成して、その下にsqlを配置しておくと、DB起動時に該当のsqlを実行してくれて、DBのcreateや、データの投入をしてくれます。

参考までに以下のようなフォルダ構成にしています。

% tree
.
├── README.md
├── local
│   ├── compose
│   │   ├── docker-compose.yml
│   └── postgres
│       ├── Dockerfile
│       └── sql
│           ├── 01_create_database.sql
│           ├── 02_create_table.sql
│           ├── 03_insert_master.sql

起動

起動して接続できれば完了です!

docker-compose up -d --build

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA