Docker Compose での psql サーバーの起動
https://hub.docker.com/_/postgres
この Docker Hub 公式の最小限?の DB サンプルより
https://zenn.dev/re24_1986/articles/b76c3fd8f76aec
- 使用する postgres イメージの version 指定
- コンテナ名指定
- ボリュームの永続化
- 接続先ポートの指定
これらのオプションをつけた、まんましろ さんの記事を参考にする
version: '3'
services:
db:
image: postgres:14
container_name: postgres
ports:
- 5444:5555
volumes:
- db-store:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=pass
volumes:
db-store:
これで docker-compose.yml を書き
docker-compose up
Creating volume "psql_db-store" with default driver
WARNING: Found orphan containers (psql_pgadmin_1, psql_postgres_1) for this project. If you removed or renamed this service in your compos
e file, you can run this command with the --remove-orphans flag to clean it up.
Pulling db (postgres:14)...
14: Pulling from library/postgres
025c56f98b67: Pull complete
26dc25c16f4e: Pull complete
a032d8a894de: Pull complete
40dba7d35750: Pull complete
8ebb44a56070: Pull complete
813fd6cf203b: Pull complete
7024f61bf8f5: Pull complete
23f986b322e8: Pull complete
9f76961a3266: Pull complete
25ab50475209: Pull complete
6e14c5d69b41: Pull complete
61c4089902cf: Pull complete
a285fd6fb063: Pull complete
Digest: sha256:18050649e69395b9b76e38af69055b0e522c307c2fc5951c5289324832876aae
Status: Downloaded newer image for postgres:14
Creating postgres ... done
Starting PostgreSQL 14.6
(Debian 14.6-1.pgdg110+1)
on x86_64-pc-linux-gnu
docker-compose up を打つとコンテナが立ち上がる。
psql のコンテナに入って実行
docker ps でコンテナ一覧を表示して
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
269d9f02c4df postgres:14 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 5432/tcp, 0.0.0.0:5444->5555/tcp, :::5444->5555/tcp postgres
今立ち上げたコンテナに入る。
5432/tcp, 0.0.0.0:5444->5555/tcp, になっているところをみると
立ち上がるときの Docker 内部での 5432 は固定だから、5444 を内部にして 5555 を外部にして 5555 から接続させるのはうまく行かなそう?要検証
docker exec -it postgres bash
root@a9df27dd42c9:/#
docker exec -it で入ることができる。
root@269d9f02c4df:/# psql -h localhost -U postgres
psql (14.6 (Debian 14.6-1.pgdg110+1))
Type "help" for help.
postgres=#
そしてコンテナの内部から Postgres DB サーバーに接続する。
ホストやユーザーは設定していないが、デフォルトの localhost や postgres で接続できる。
postgres-# \l
List of databases
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)
postgres-#
PostgreSQL のコマンドが機能することが確認できた。
これで psql での SQL の練習くらいはすぐにできるようになった。
Top comments (0)