2016-06-12 170 views
10

我想在使用Docker撰寫的遠程服務器上部署第二個數據庫容器。這個postgresql服務器運行在端口5433上,而不是第一個postgresql容器使用的5432。在Docker Compose中更改postgres容器服務器端口

當我設置應用程序我得到這個錯誤輸出:

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? 

和我的碼頭工人撰寫的文件是:

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 

我覺得這個問題必須在postgresql.conf文件服務器實例已將端口設置爲5432,導致在我的應用嘗試連接到該端口時發生錯誤。有沒有一種簡單的方法來使用組合文件中的命令來更改端口,而不是用捲來替換文件?

我對這項工作使用官方postgresql容器。

+0

你說的Postgres在容器上運行5432 ,但是你想在5433上公開它? –

回答

20

我假設的Postgres是在集裝箱港口5432運行,並且要公開它的主機上5433.

使用此在港口的strophe:

ports: 
    -"5433:5432" 

那會在主機上的端口5433上公開服務器。在這種情況下,您可以擺脫現有的暴露限制。

如果你只是想公開服務在撰寫文件中聲明的其他服務,只需使用公開的strophe並將其指向內部暴露的端口5432

+0

無需更新項目'settings.py'數據庫設置 – Max