Explorando Postgres: interfaces gr谩ficas vs. terminal

5/27
Recursos

Aportes 22

Preguntas 14

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

al trabajar con docker no se aconseja usar la direcci贸n ip del contenedor porque esta cambia cuando el contenedor se destruye, en este caso se debe usar el nob隆mbre del contenedor, en nuestro archivo docker-compose.yml este es el nombre que le damos al servico. En la clase el profesor le ha colocado al servicio el nombre postggres y ese es el nombre que debemos usar para conectarnos y no la ip del contenedor. adicionalmente podemos colocarle un nombre al contenedor luego de definir el servicio Ej: container_name: db y si utilizamos este nombre en los parametros de coneccion veremos que la conecci贸n se hace correctamente

CREATE TABLE task (
	id serial PRIMARY KEY,
	title VARCHAR ( 250 ) NOT NULL,
	completed boolean DEFAULT false
);

Para los que no les funciona el comando 鈥渄ocker-compose exec postgres bash鈥 y les sale el error de 鈥渟ervice postgres is no running鈥 cambien el exec por un run para que funcione

Les dejo mis notas de la clase Aqui

Comandos:

  • ls -l : ver todos los archivos
  • \d+ : Una vez logueado te va a mostrar la estructura de la base de datos
  • \q : Salir de la base de datos
  • exit : Nos salimos del contenedor
  • docer ps : Nos muestra una tabla con los servicios
  • docker inspect <id> : Nos da un detalle del contenedor

Apuntes:

docker-compose.yml:

version: 鈥3.3鈥

services:
postgres:
image: postgres:13
environment:
- POSTGRES_DB=my_store
- POSTGRES_USER=nico
- POSTGRES_PASSWORD=admin123
ports:
- 5432:5432
volumes:
- ./postgres_data:/var/lib/postgresql/data

pgadmin:
image: dpage/pgadmin4
environment:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=root
ports:
- 5050:80


sudo docker-compose exec postgres bash

psql -h localhost -d my_store -U nico

\q

exit

https://www.pgadmin.org/

https://hub.docker.com/r/dpage/pgadmin4

sudo docker-compose up -d pgadmin

sudo docker ps

sudo docker inspect


CREATE TABLE tasks (
id serial PRIMARY KEY,
title VARCHAR ( 255 ) NOT NULL,
completed boolean DEFAULT false
);


sudo docker-compose exec postgres bash

psql -h localhost -d my_store -U nico

\d+

Para los que le salga un error como este

psql: error: connection to server at 鈥渓ocalhost鈥 (127.0.0.1), port 5432 failed: FATAL: role 鈥渘ico鈥 does not exist

es debido a que ten铆an un nombre de usuario diferente en la variable de entorno 鈥淧OSTGRES_USER=otro_usuario鈥 cuando levantaron postgres por primera vez, y luego cambiaron el nombre de usuario al levantar postgres por segunda vez, para solucionar esto solo basta con eliminar el contenido de la carpeta 鈥減ostgres_data鈥 y al levantar postgres se crear谩n

Yo soy usuario de WSL2 y tuve bastantes retos a la hora de realizar esta clase. Consegui hacer funcionar todo, cualquier duda escriban aqui. Les dejo mi docker-compose.yml:

version: "3.8"

services:
  postgres:
    image: postgres:latest
    restart: always
    container_name: my_container_db
    environment:
      POSTGRES_DB: my_store
      POSTGRES_USER: maxdn
      POSTGRES_PASSWORD: admin123
    ports:
      - 5432:5432
    volumes:
      - /postgres_data:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: [email protected]
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
      - 5050:80

Para quienes han tenido problema el siguiente problema al momento de usar postgres.

Is the server running on host 鈥渓ocalhost鈥 (::1) and accepting TCP/IP connections on port 5432?

Se debe hacer lo siguiente.

  1. Debes ir a la carpeta docker-compose.yml.
  2. Vas a ports, del servicio postgres, y lo cambias. Antes era 5432:5432 y debes cambiarlo por 5433:5432.

Entend铆 que es porque el puerto est谩 ocupado por otro servicio y postgres no podr谩 conectarse. Por eso sale que si el server est谩 corriendo.

Mi tal贸n de Aquiles como Frontend鈥 las DB

Comando Descripcion
docker-compose exec postgres bash Conexion via terminal
ls -l Ver todos los archivos
psql -h localhost -d <POSTGRES_DB> -U <POSTGRES_USER> Conexion a Postgres
\d+ Estructura de la base de datos
\q Salir base de datos
exit Salir del contenedor
docker-compose up -d pgadmin Levantar servicio de pgadmin
docker-ps Tabla de servicios
docker-inspect <id> Detalle del contenedor

Por si bloquean el acceso jaja y les sale algo asi

Lo pude solucionar haciendo: docker-compose down -v y despues docker-compose up -d
.
El error surge cuando cambian un dato del mail o la contrasena y la informacion queda persistida.

CREATE TABLE tasks (
id serial PRIMARY KEY,
title VARCHAR ( 250 ) NOT NULL,
completed boolean DEFAULT false
);

Si tiene el error 鈥渟ervices.postgres Additional property pgadmin is not allowed鈥 es un error de identaci贸n en el yml . Deber铆a estar alineado a postgres y los dem谩s servicios.

Una clase incre铆ble.

Por si alguien mas tiene mil problemas corriendo el codigo, a mi me funciono con esto, muchos cambios, uso WSL y me salio lo de exited(1), el error de permissions y tambien otros cuantos errores

version:3.8
services:
  postgres:
    image: postgres
    restart: always
    environment:
      - DATABASE_HOST=127.0.0.1
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=my_store
    ports:
      - "5432:5432"
    volumes:
      - /postgres_data:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: "[email protected]"
      PGADMIN_DEFAULT_PASSWORD: "root"
    ports:
      - "5050:80"
    depends_on:
      - postgres

Para los que le salga error en el create server de pgadmin, pueden hacer lo siguiente.

archivo docker
version: 鈥3.8鈥

services:
postgres:
image: postgres
restart: always
environment:
- DATABASE_HOST=127.0.0.1
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
- POSTGRES_DB=my_store
ports:
- 5432:5432

pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: "[email protected]"
PGADMIN_DEFAULT_PASSWORD: "root"
ports:
- "80:80"
depends_on:
- postgres

En hostname/address: postgres
database: my_store
username:root
password:root

Eso seria todo y espero les sirva

Me he acomodado m谩s en bash

No es por nada, estoy aprendiendo backend y todo iba bien porque el profe explica precioso pero a este punto鈥 me siento algo abrumado con docker y no se por que鈥 a lo mejor de tantas cosas que leo en twitter

le tenia un poco de susto a docker pero con este profesor me estoy motivando a usarlo

驴Qu茅 puedo hacer si olvide la contrase帽a de la base de datos my_store en pgadmin? Seg煤n yo hab铆a puesto la misma que el maestro pero nose en que momento pude haberla cambiado.

Recuerden trabajar con permisos de admin o super usuario (sudo) para correr los comandos de docker en la terminal

Tengo este problema en docker no permite ejecutar nada