Docker上に複数の PostgreSQL コンテナを立ち上げる
Strapi を開発環境と本番環境のDockerで動かしたい【まとめ版】の記事を書いていた時に、以前別で作った環境とポート番号が重複してしまい、とても苦しみました。
Strapi コンテナを起動しようとしてもError: connect ECONNREFUSED 172.25.0.2:5438
といったエラーがずっとでてしまって PostgreSQL のコンテナと接続できずにいました。
解決法
Creating multiple PostgreSQL containers in docker in fedora – Stackoverflowのアンサーより、PGPORT
という変数を用いることでポート番号を変更することができました。
これは、PostgreSQL Docker イメージのOverviewにも書かれておらずかなり苦戦しました。
PGPORT
を環境変数として設定することでポートの変更を行い、複数のDockerコンテナを立ち上げることができます。
# ポートの指定 -p 5111:5434 環境変数を追加 -e PGPORT=5111
docker container run --name postgres-container -dit -p 5111:5432 -e POSTGRES_DB=hoge -e POSTGRES_USER=hoge -e POSTGRES_PASSWORD=hoge -e PGPORT=5111 postgres
Docker Compose を利用する場合には以下のように追加します。
docker-compose.yml
version: "3"
services:
.. 省略
vps-docker-strapi-database:
image: postgres:12.0-alpine
container_name: vps-docker-strapi-database
platform: linux/amd64
restart: unless-stopped
env_file: .env.development
environment:
POSTGRES_USER: ${DATABASE_USERNAME}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
POSTGRES_DB: ${DATABASE_NAME}
PGPORT: ${DATABASE_PORT} # 追加する
volumes:
- ./data:/var/lib/postgresql/data/
ports:
- "${DATABASE_PORT}:5432"
networks:
- vps-docker-strapi-networks
.. 省略
おわりに
当箇所にハマった記事(Strapi を開発環境と本番環境のDockerで動かしたい【まとめ版】)にも追記しておきます。
丸一日くらい溶かしたので解決してよかったです。