web-dev-qa-db-ja.com

Docker Composeでpostgresコンテナーサーバーポートを変更する

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コンテナを使用しています。

20
GreenGodot

Postgresはコンテナのポート5432で実行されており、5403のホストで公開したいと考えています。

これをポートストロフで使用します。

ports:
    -"5433:5432"

これにより、ホストのポート5433でサーバーが公開されます。このシナリオでは、既存の公開ストロボを取り除くことができます。

コンポーズファイルで宣言された他のサービス(およびlocalhostではない)にのみサービスを公開する場合は、公開ストロボを使用して、既に内部公開されているポート5432を指定します。

40
Robert Moskal