Docker for MacでPostgreSQL
いまさらDockerをはじめてみます。
本当はがっつり開発環境まるごと構築したいけど、
いきなりは難しそうなので、まずはDBだけでもdocker使います!
構築する環境
PostgreSQL バージョン 11.1
Dockerインストール
公式サイトからDocker for Macをダウンロードしてインストールします。
※初めての場合は、docker hub のアカウント作成が必要
公式サイトからダウンロードします。
docs.docker.com
ダウンロードした「Docker.dmg」でインストールします。
Dockerを起動すると、以下の画面が表示され流ので、「Next」をクリックします。
次の画面では、「OK」をクリックします。
端末のパスワードを入力する画面が現れるので、入力します。
上から画面が伸びてきます。docker hub のアカウントでログインします。
上のバーに、Dockerアイコンが現れ、クリックでメニューが表示されたら起動完了です。
正しくインストールされているか確認します。
docker --version Docker version 18.09.0, build 4d60db4 docker-compose --version docker-compose version 1.23.2, build 1110ad01 docker-machine --version docker-machine version 0.16.0, build 702c267f
Dockerfileの準備
空ディレクトリを作成し、その中に以下のように記述したDockerfileを配置します。
デフォルトではサーバロケールがen_US.utf8になっているため、
ja_JP.utf8になるように、Dockerfileを作成します。
FROM postgres:11.1 RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8 ENV LANG ja_JP.utf8
今回は、PostgreSQLのバージョン11.1のイメージを指定しています。
使えるイメージは、Docker Hubと呼ばれる公開リポジトリから確認できます。
PostgreSQLを起動する
Dockerfileをビルドし、起動します。
docker build -t dev-postgres -f Dockerfile . docker run -it --name=my-db -p 5432:5432 -e POSTGRES_USER=dev -e POSTGRES_PASSWORD=secret -d dev-postgres
オプション | 意味 |
---|---|
--name my-db | コンテナ名 |
-p 5432:5432 | ホストのポート:コンテナのポート |
-e POSTGRES_USER | スーパユーザ名(省略時は"postgres") |
-e POSTGRES_PASSWORD | スーパユーザのパスワード(省略時はパスワードなしでログイン可) |
確認
起動しているコンテナの一覧はdocker psで確認できます。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d16c5781d3ed dev-postgres "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 5432/tcp my-db
docker imagesコマンドでイメージの一覧を確認できます。
docker images
接続
以下のコマンドで、DBに接続できます。
docker exec -it my-db psql -U dev
また、posticoなどのツールでも普通に接続できます。
Host: localhost
Port:5432
コンテナの停止
docker stop my-db(コンテナ名)
コンテナの起動
docker start my-db(コンテナ名)
コンテナにログイン
docker exec -it my-db(コンテナ名) bash
コンテナの削除
docker rm -f my-db(コンテナ名)