Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker - How can run the psql command in the postgres container?

I would like to use the psql in the postgres image in order to run some queries on the database. But unfortunately when I attach to the postgres container, I got that error the psql command is not found...

For me a little bit it is a mystery how I can run postgre sql queries or commands in the container.

How run the psql command in the postgres container? (I am a new guy in Docker world)

I use Ubuntu as a host machine, and I did not install the postgres on the host machine, I use the postgres container instead.

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      

Here the containers:

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 

And this is my 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 
like image 919
Dabagab Avatar asked May 08 '16 11:05

Dabagab


People also ask

What is the command to run PostgreSQL commands in a container?

Connecting to the PSQL server via CLI : Run the below command to enter into the container (with the ID from step-1). docker exec -it <PSQL-Container-ID> bash. Authenticate to start using as postgres user. psql -h localhost -p 5432 -U postgres -W.


1 Answers

docker exec -it yiialkalmi_postgres_1 psql -U project -W project 

Some explanation

  • docker exec -it The command to run a command to a running container. The it flags open an interactive tty. Basically it will cause to attach to the terminal. If you wanted to open the bash terminal you can do this

docker exec -it yiialkalmi_postgres_1 bash

  • yiialkalmi_postgres_1 The container name (you could use the container id instead, which in your case would be 40e39bd0329a )

  • psql -U project -W project The command to execute to the running container

  • U user

  • W Tell psql that the user needs to be prompted for the password at connection time. This parameter is optional. Without this parameter, there is an extra connection attempt which will usually find out that a password is needed, see the PostgreSQL docs.

  • project the database you want to connect to. There is no need for the -d parameter to mark it as the dbname when it is the first non-option argument, see the docs: -d "is equivalent to specifying dbname as the first non-option argument on the command line."

These are specified by you here

environment:     POSTGRES_DB: project     POSTGRES_USER: project     POSTGRES_PASSWORD: project 
like image 139
Alkis Kalogeris Avatar answered Sep 22 '22 05:09

Alkis Kalogeris