1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Databaseコンテナを構築(PostgreSQL編)

Last updated at Posted at 2020-05-15

Databaseコンテナを構築(PostgreSQL編)

ソフトウェア開発に欠かせないデータベース環境をWindows ノートPCに構築します。

今回はPostgreSQL環境を構築します。

モチベーション

  • 開発用にPostgreSQL環境をノートPC上で構築したい。
  • ポート、ユーザ、スキーマの定義は起動時に自動的に設定してほしい。

手順

環境

  • Windows 10 Pro
  • Docker Desktop for Windows

設定ファイルの作成

  • ファイルは以下のようなディレクトリ構造で配置します。
{任意フォルダ}
 ├ docker-compose.yaml
 └ docker-entrypoint-initdb.d
   └ init.sh
  • docker-compose.yamlを作成します。
version: '3'
services:
db:
image: postgres:12-alpine
container_name: db-container
ports:
- 5433:5432
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
volumes:
- /C/Task/RedmineWorkHICT/#7212/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
  • init.shを作成します。
set -e
psql -U admin admin << EOSQL
CREATE TABLE Users(
  account_id        SERIAL PRIMARY KEY,
  account_name      VARCHAR(20),
  email             VARCHAR(100),
  password    CHAR(64)
);

CREATE TABLE UserStatus(
  status            VARCHAR(20) PRIMARY KEY
);
EOSQL

改行コードをLinuxに揃える

今回の環境はWindowsのなので改行コードによりdockerの実行がエラーになる場合があります。
以下を実施して、改行コードをLinuxに揃えておきます。

  • VSCodeの場合:右下の改行コードの箇所をLFにする。

{17AFD2C7-66A8-4454-8F63-E210225EA400}.png

  • Vimの場合:以下のコマンドでCR改行コードを削除。
:%s/^M//g
  • エラーがある場合は、以下コマンドでコンテナとユーザキャッシュを削除します。
docker-compose down -v
docker-compose build --no-cache
docker-compose up -

起動とチェック

  1. 以下コマンドで起動します。
docker-compose up -d
  1. PostgreSQLのコンソールまで入ります。
docker exec -it db-container bash
psql -U admin
  1. 適当にSQL文を発行して動作を確認します。

まとめ

上記手順で新規に環境を構築できました。

  • docker-compose.ymlで以下を定義する。
    • PostgresSQLのコンテナイメージ
    • ユーザとパスワード
    • ポート
  • init.shでスキーマの定義を自動的に設定する。

応用編

  • データが入った状態で開始したい場合には以下の方法があります。
    • init.shにInsert文も記述する。(少量向け)
    • バックアップデータからレストアする。
    • DBデータディレクトリをマウントする。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?