postgresql docker docker-compose

postgresql - Cambio de un puerto del servidor de contenedores postgres en Docker Compose



docker-compose (1)

Estoy tratando de implementar un segundo contenedor de base de datos en un servidor remoto utilizando Docker compose. Este servidor postgresql se ejecuta en el puerto 5433 en lugar de 5432 como lo usa el primer contenedor postgresql.

Cuando configuro la aplicación obtengo este error de salida:

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?

y mi archivo de compilación docker es:

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

Siento que el problema debe ser el archivo postgresql.conf en la instancia del servidor que ha establecido el puerto en 5432, lo que causa el error cuando mi aplicación intenta conectarse. ¿Existe una forma sencilla de cambiar el puerto utilizando un comando en el archivo de composición en lugar de perder el tiempo con los volúmenes para reemplazar el archivo?

Estoy usando el contenedor oficial de postgresql para este trabajo.


Supongo que postgres se está ejecutando en el puerto 5432 en el contenedor y desea exponerlo en el host en 5433.

Usa esto en la estrofa de puertos:

ports: -"5433:5432"

Eso expondrá el servidor en el puerto 5433 en el host. Puede deshacerse de su estrofa de exposición existente en este escenario.

Si solo desea exponer el servicio a otros servicios declarados en el archivo de redacción (y NO en el servidor local), solo use la estrofa de exposición y apúntelo al puerto 5432 ya expuesto internamente.