hub - docker postgresql database
Docker: ¿Cómo se puede ejecutar el comando psql en el contenedor de postgres? (3)
Si desea restaurar la base de datos en un contenedor puede hacer esto
docker exec -i app_db_1 psql -U postgres < app_development.back
No te olvides de añadir -i
:)
Me gustaría usar el psql en la imagen de postgres para ejecutar algunas consultas en la base de datos. Pero desafortunadamente cuando me conecto al contenedor de postgres, recibí ese error, el comando psql no se encuentra ...
Para mí, un poco, es un misterio cómo puedo ejecutar consultas o comandos postgre sql en el contenedor.
¿Cómo ejecutar el comando psql en el contenedor de postgres? (Soy un chico nuevo en el mundo Docker)
Utilizo Ubuntu como máquina host, y no instalé postgres en la máquina host, en su lugar utilizo el contenedor postgres.
docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------
yiialkalmi_app_1 /bin/bash Exit 0
yiialkalmi_nginx_1 nginx -g daemon off; Up 443/tcp, 0.0.0.0:80->80/tcp
yiialkalmi_php_1 php-fpm Up 9000/tcp
yiialkalmi_postgres_1 /docker-entrypoint.sh postgres Up 5432/tcp
yiialkalmi_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
Aquí los contenedores:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
315567db2dff yiialkalmi_nginx "nginx -g ''daemon off" 18 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 443/tcp yiialkalmi_nginx_1
53577722df71 yiialkalmi_php "php-fpm" 18 hours ago Up 3 hours 9000/tcp yiialkalmi_php_1
40e39bd0329a postgres:latest "/docker-entrypoint.s" 18 hours ago Up 3 hours 5432/tcp yiialkalmi_postgres_1
5cc47477b72d redis:latest "docker-entrypoint.sh" 19 hours ago Up 3 hours 6379/tcp yiialkalmi_redis_1
Y este es mi docker-compose.yml:
app:
image: ubuntu:16.04
volumes:
- .:/var/www/html
nginx:
build: ./docker/nginx/
ports:
- 80:80
links:
- php
volumes_from:
- app
volumes:
- ./docker/nginx/conf.d:/etc/nginx/conf.d
php:
build: ./docker/php/
expose:
- 9000
links:
- postgres
- redis
volumes_from:
- app
postgres:
image: postgres:latest
volumes:
- /var/lib/postgres
environment:
POSTGRES_DB: project
POSTGRES_USER: project
POSTGRES_PASSWORD: project
redis:
image: redis:latest
expose:
- 6379
Si tiene ejecutando el contenedor "postgres":
docker run -it --rm --link postgres:postgres postgres:9.6 sh -c "exec psql -h /$POSTGRES_PORT_5432_TCP_ADDR -p /$POSTGRES_PORT_5432_TCP_PORT -U postgres"
docker exec -it yiialkalmi_postgres_1 psql -U project -W project project
Alguna explicacion
-
docker exec -it
El comando para ejecutar un comando en un contenedor en ejecución. Las banderas abren un tty interactivo. Básicamente hará que se conecte al terminal. Si quieres abrir el terminal bash puedes hacerlo
docker exec -it yiialkalmi_postgres_1 bash
-
yiialkalmi_postgres_1
El nombre del contenedor (en su lugar, podría usar el id del contenedor, que en su caso sería40e39bd0329a
) psql -U project -W project
El comando para ejecutar en el contenedor en ejecuciónUsuario
U
- Contraseña
W
-
project
la base de datos a la que deseas conectarte.
Estas son especificadas por usted aquí
environment:
POSTGRES_DB: project
POSTGRES_USER: project
POSTGRES_PASSWORD: project