PostgreSQLの勉強をするにあたって、「気軽に触ることができる環境が欲しい!」と思っている人向けの記事です。「とにかく時短で構築できる環境は何か?」でいくつか検討した結果、今回は、Dockerを使用しました。あくまで、PostgreSQLが触れる環境を早く作る!ってことが目標なので、Dockerの設定とかは覚えなくて大丈夫です(コピペでOK)。それではいってみましょう!
(宣伝)
Dockerをインストールする。(5分)
1.以下のURLからDockerをダウンロードして、インストールする。
Get Started
Get started with Docker Desktop and join millions of developers in faster, more secure app development using containers ...
2.ターミナルを開いて、Dockerがインストールされたことを確認する。
$ [~] % docker -v
Docker version 20.10.7, build f0df350
PostgreSQL用のDockerイメージを作成する。(5分)
それではPostgreSQL用のDockerイメージを作成していきます。
1.適当な場所で作業用のディレクトリを作成する。
$ mkdir study-infra-postgresql
$ cd study-infra-postgresql
2.Dockerfile.pgsqlを作成する。
「こう書くんだなー」ぐらいで深く考えずに!
FROM postgres:13.5
ENV POSTGRES_PASSWORD postgres
RUN apt-get update && \
apt-get clean && \
rm -fr /var/lib/apt/lists/*
3.docker-compose.ymlを作成する。
「こう書くんだなー」ぐらいで深く考えずに!
また、DBコンテナに割り当てるCPUを「1コア」、メモリを「2GB」にしています。
version: '3'
services:
db:
build:
context: .
dockerfile: Dockerfile.pgsql
container_name: study-infra-postgresql
volumes:
- db:/var/lib/postgresql/data
ports:
- '25432:5432'
deploy:
resources:
limits:
cpus: '1.0'
memory: 2G
volumes:
db:
driver: local
4.PostgreSQL用のDockerイメージを作成する。
$ docker-compose build
[+] Building 7.7s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 142B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/postgres:13.5 0.0s
=> CACHED [1/2] FROM docker.io/library/postgres:13.5 0.0s
=> [2/2] RUN apt-get update && apt-get clean && rm -fr /var/lib/apt/lists/* 7.5s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:7d243aa5b9754f9ef2542e4908a766ebecf5c44e7ea9a9066515c75cab5bc92f 0.0s
=> => naming to docker.io/library/study-infra-postgresql:1.0.0 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
$
(宣伝)
PostgreSQLに接続する!(5分)
1.PostgreSQL用のコンテナを起動する。
$ docker-compose up -d
オプションの解説も載せときます。(覚えなくてもOK!)
オプション | 解説 |
---|---|
-d | コンテナをバックグランドで起動します。 |
2.PostgreSQL用のコンテナに接続する。
まだDBに接続するわけではないので注意!
$ docker exec -u postgres -it study-infra-postgresql bash
postgres@93e2b0eb4044:/# ←こうなったらコンテナに接続できています。
3.PostgreSQLに接続する。
postgres@93e2b0eb4044:~$ psql
psql (13.5 (Debian 13.5-1.pgdg110+1))
Type "help" for help.
postgres=# ←こうなったらPostgreSQLに接続できています。
4.試しにDBを作成してみよう。
①データベースの確認。
postgres=# \l
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
②「study_infra」という名前のデータベースを作成。
postgres=# CREATE DATABASE study_infra;
CREATE DATABASE
postgres=#
③作成したデータベースの確認。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
study_infra | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
postgres=#
その他よく使うコマンドの紹介
コンテナの起動停止
# 起動
$ docker-compose stop
# 停止
$ docker-compose start
コンテナを削除したい場合
$ docker-compose rm
以上で、PostgreSQLが素早く構築できました。
お疲れ様でした!
(宣伝)
コメント