Docker composeを使用して、リモートサーバーに2番目のデータベースコンテナーを展開しようとしています。このpostgresqlサーバーは、最初のpostgresqlコンテナーで使用される5432ではなく、ポート5433で実行されます。
アプリケーションをセットアップすると、次のエラー出力が表示されます。
web_1 | Django.db.utils.OperationalError: could not connect to server: Connection refused
web_1 | Is the server running on Host "db" (172.17.0.2) and accepting
web_1 | TCP/IP connections on port 5433?
私のdocker composeファイルは次のとおりです。
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: route_admin
POSTGRES_USER: route_admin
expose:
- "5433"
ports:
- "5433"
volumes:
- ./backups:/home/backups
web:
build: .
command: bash -c "sleep 5 && python -u application/manage.py runserver 0.0.0.0:8081"
volumes:
- .:/code
ports:
- "81:8081"
links:
- db
environment:
- PYTHONUNBUFFERED=0
この問題は、ポートが5432に設定されているサーバーインスタンスのpostgresql.confファイルが原因であると思われます。これにより、アプリが接続しようとしたときにエラーが発生します。ボリュームをいじってファイルを置き換えるのではなく、構成ファイルでコマンドを使用してポートを変更する簡単な方法はありますか?
私はこの仕事に公式のpostgresqlコンテナを使用しています。
Postgresはコンテナのポート5432で実行されており、5403のホストで公開したいと考えています。
これをポートストロフで使用します。
ports:
-"5433:5432"
これにより、ホストのポート5433でサーバーが公開されます。このシナリオでは、既存の公開ストロボを取り除くことができます。
コンポーズファイルで宣言された他のサービス(およびlocalhostではない)にのみサービスを公開する場合は、公開ストロボを使用して、既に内部公開されているポート5432を指定します。