instalar postgresql docker fig

postgresql - instalar - ¿Cómo entrar en psql de un contenedor postgres en ejecución?



install postgresql ubuntu 18 (3)

Creé un contenedor postgres usando el tutorial en el sitio web de fig . Llamé al contenedor db .

El contenedor se está ejecutando y mi aplicación se conecta perfectamente. Intenté ejecutar el comando fig run db psql con el contenedor db ejecutándose y obtuve el error:

psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

¿Cómo puedo acceder a la interfaz psql en el contenedor de db en ejecución?


¿Puedes publicar el resultado de docker ps ? Supongo que necesitas especificar el puerto que expone el contenedor postgres. Ejecutar docker ps debería darte

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 948b1f6ebc0a my_postgres:latest "/usr/lib/postgresql 6 days ago Up 6 days 0.0.0.0:49155->5432/tcp db

y mirando debajo de la columna de PUERTOS para su contenedor db, verá el puerto sobre el que el db está realmente expuesto. En este caso es 49155, pero Docker elegirá un puerto aleatorio entre 49153 y 65535 si no se especifica explícitamente en el inicio del contenedor. Debe suministrar la opción -p a psql para luego orientar ese puerto como tal

psql -p 49155 ...

Fuente: https://docs.docker.com/userguide/dockerlinks/


Necesita ejecutar un nuevo contenedor para conectarse al que comenzó con la fig. Esto es así porque el contenedor principal inicia el servicio por defecto y, si lo hace, fig run db psql fig NO arrancará el servicio, sino que ejecutará el cliente psql en su lugar. Ver el archivo Docker .

Entonces, para conectarse al servicio PostgreSQL necesita ejecutar otro contenedor vinculado al iniciado por la fig. Ver https://registry.hub.docker.com/_/postgres/ .

Primero, como fig cambia los nombres de los contenedores iniciados, verifique la columna NAMES del contenedor docker ps después de haber hecho el fig up . Entonces:

docker run -it --link <postgres_container_name>:postgres --rm postgres sh -c ''exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres''

Puedes hacer el truco del docker exec así como también el de @sargas, pero la forma de enlazar me suena más canónica.


fig creará un contenedor acoplable con un nombre diferente al utilizado en el archivo fig.yml .

Lo conseguí funcionando buscando el nombre del contenedor con docker ps y mirando la columna NAMES .

A continuación, psql comando psql en el contenedor en ejecución con docker exec -ti NAME_OF_CONTAINER psql -U YOUR_POSTGRES_USERNAME

Tenga en cuenta que docker exec ejecuta el comando psql en un contenedor en ejecución, a diferencia de docker run que iniciará un nuevo contenedor.

Actualizar

la figura ahora se llama docker-compose