2016-06-12 16 views
10

Próbuję wdrożyć drugi kontener bazy danych na serwerze zdalnym za pomocą komponentu Docker. Ten serwer PostgreSQL działa na porcie 5433 w przeciwieństwie do 5432 używanego przez pierwszy kontener PostgreSQL.Zmiana portu serwera PostgreSQL w Docker Compose

Kiedy skonfigurować aplikację uzyskać to wyjście błędu:

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? 

i mój plik komponować doker brzmi:

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 

czuję kwestia musi być plik postgresql.conf na wystąpienie serwera, które ustawiło port na 5432, powodując błąd, gdy moja aplikacja próbuje się z nim połączyć. Czy istnieje prosty sposób na zmianę portu przy użyciu polecenia w pliku komponowania, a nie w przypadku wymiany woluminów w celu zastąpienia pliku?

Używam oficjalnego kontenera Postgresql do tej pracy.

+0

mówisz Postgres jest uruchomiony na 5432 w pojemniku , ale chcesz go wystawić na 5433? –

Odpowiedz

20

Jestem zakładając postgres jest uruchomiony na porcie 5432 w kontenerze i chcesz narazić go na hoście na 5433.

użyć tego w portach strofa:

ports: 
    -"5433:5432" 

że będziemy wystawić serwer na porcie 5433 na hoście. W tym scenariuszu możesz pozbyć się istniejącej ekspozycji.

Jeśli chcesz tylko wystawiać usługi do innych usług zgłoszonych w pliku komponować, wystarczy użyć expose strofa i skierować go do wewnętrznie narażone portu 5432.

+0

Nie trzeba aktualizować ustawień projektu 'settings.py' bazy danych – Max