Cómo Instalar PostgreSQL y Pgadmin con Docker
Tags: docker, postgres, tutorial, beginners
Published: 2022-06-04 17:46:50

En este post, aprenderemos como instalar y configurar PostgreSQL y Pgadmin con Docker. si aun no estas familiarizado con Docker, por favor lee [¿Cómo usar los comandos de Docker?](https://dev.to/steadylearner/how-to-use-docker-commands-42da) primero.

[Puedes ver la versión en inglés aquí.](https://dev.to/steadylearner/how-to-set-up-postgresql-and-pgadmin-with-docker-51h)

[Puedes contactarme por telegram si necesitas contratar a un desarrollador Blockchain Full Stack.](https://t.me/steadylearner)

[También puedes unirte a mi grupo de telegram, en el cual puedes encontrar otros desarrolladores blockchain, así como reclutadores, jefes de proyecto, así como hacer preguntas y ampliar tu red](https://t.me/solanadevelopers)

Si usas Linux como sistema operativo, escribe `$docker` en la terminal y te mostrara como instalar Docker.

![docker desktop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xmrajw4gfyhgi4zxft9p.png)

Si usas Mac o Windows, [seria mejor installar la aplicacion de Docker en escritorio](https://www.docker.com/products/docker-desktop). luego opcionalmente puedes configurarlo para utilizar minima cantidad de recursos.

![configuracion minimo uso de recursos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpibfo11keudoicm5w8f.png)

## Tabla de contenidos

1. Instalar Postgresql y Pgamdin con Docker
2. Enlazarlos con Docker network
3. Configuracion de Pgadmin y confirmar conexion
4. Conclusion

## 1. Instalar Postgresql y Pgamdin con Docker

Antes de Instalar Postgresql con Docker, haremos que los datos persistan en la máquina con [volume](https://docs.docker.com/storage/volumes/).

```console
$docker volume create postgresqldata
```

Podrás ver si funciono con el comando $docker volume ls

```console
DRIVER    VOLUME NAME
local     postgresqldata
```

El Volumen para guardar los datos de Postgresql esta listo, ahora lo instalaremos con Docker y lo enlazaremos al volumen que hemos creado con el siguiente comando.

```console
$docker run -d -v postgresqldata:/data/db -e POSTGRES_PASSWORD=postgres --name postgres -p 5432:5432 postgres
```

Puedes usar tu propia password si deseas luego de terminar este post.

Cuando la instalación se haya completado, veras un mensaje similar por consola.

```console
Status: Downloaded newer image for postgres:latest
```

Ahora usa `$docker ps -a` para ver si se guardo correctamente.

```console
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                       NAMES
postgres   "docker-entrypoint.s…" 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   postgres
```

Usa `$docker exec -it postgres /bin/bash` para usar la consola de la imagen de Docker y luego `$psql -h localhost -U postgres` para poder utilizar los comandos psql en la terminal.

No vas a necesitar hacer esto a menudo si instalas pgadmin luego, pero puedes cambiar el password si lo deseas con `\password` si quieres al terminar el post.

Verificamos que Postgresql fue instalado correctamente con Docker.
Usaremos otra consola para instalar Pgadmin y gestionar de forma mas facil con el siguiente comando.

```console
$docker run --name pgadmin -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -p 5050:80 -d dpage/pgadmin4 
```

Veras un mensaje similar a este.

```console
Status: Downloaded newer image for dpage/pgadmin4:latest
```

Puedes ver que se instaló correctamente otra vez con `$docker ps -a` abre tu explorador y coloca la siguiente url http://localhost:5050/login para ver si esta funcionando correctamente, utiliza el usuario y contraseña que usaste anteriormente.

![login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ou0a44435f8plxot290.png)

Seras redirigido a la página de administrador.

![admin](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oepsqddbeoppbl5ryy3z.png)


## 2. Enlazarlos con Docker network y configuracion de Pgadmin.

Para hacer que el Pgadmin que instalamos con Docker funcione con Postgresql, debemos enlazarlos con los comandos de Docker network.

Primero crearemos pgnetwork, como se muestra en el siguiente comando.

```console
$docker network create --driver bridge pgnetwork
```

Puedes ver si fue creado con el siguiente comando `$docker network ls`.

```console
NETWORK ID     NAME        DRIVER    SCOPE
               pgnetwork   bridge    local
```

Ahora enlazaremos Pgadmin y Postgresql al pgnetwork con estos comandos.

```console
$docker network connect pgnetwork pgadmin
$docker network connect pgnetwork postgres
```

Puedes verificar que esten conectados a pgnetwork con el comando `docker network inspect pgnetwork`.

```console
[
    {
        "Name": "pgnetwork",
            {
                "Name": "pgadmin",
                "Name": "postgres",
            }
        },
    }
]
```

Si pudiste llegar hasta aqui, quiere decir que todo esta listo para hacer que funcione Pgadmin con Postgresql en Docker.

## 3. Configuración de Pgadmin y confirmar conexión

Debido a que enlazamos Pgadmin y Postgresql con Docker en la misma red, finalmentos podemos configurar Pgadmin para conectarse con Postgresql.

Ahora haz clic en el botón "new server" [en la página de administrador](http://localhost:5050/browser).

Ahora, utiliza **postgres** para todos los campos que sean necesarios en caso de que no hayas cambiado nada hasta el momento.

![set up pgadmin general](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h19z3rk31dphmrv88ml0.png)

![set up pgadmin connection](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qapjb42yyfli8npun5te.png)

Haz clic en el botón "save" para guardar y veras que la conexion finalmente se realizó.

![end connection](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2x72d9x66m8mkaa05fbq.png)

Espero que hayas podido llegar hasta aqui. [Puedes buscar mas informacion de como usarlo en su sitio web](https://www.pgadmin.org/docs/pgadmin4/development/keyboard_shortcuts.html)

Puedes detenerlo luego de probarlo para que no utilice muchos recursos con este comando.

```console
$docker stop pgadmin postgtres
```

Estos comandod pueden serte de ayuda en caso de que decidas usarlo con Python.

```console
# Intel 
# $pip install psycopg2 or 

# M1  
# $brew install postgresql, $brew link openssl
# export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include -I/opt/homebrew/opt/icu4c/include"
# export PATH=/opt/homebrew/opt/postgresql@13/bin:$PATH
# export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
# export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
# export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
# pip install psycopg2-binary
```
## 4. Conclusion

En este post, aprendimos s como instalar y configurar Postgresql y Pgamdin en Docker. También podras utilizarlo con una instancia remota de Postgresql.

Si lograste hacerlo funcionar, no tendras que volver a instalar localmente Postgresql y pgadmin.

[Si necesitas un desarrollador, puedes contactarme.](https://t.me/steadylearner)

[Puedo escribir una full stack dapp.](https://dev.to/steadylearner/how-to-make-a-fullstack-dapp-with-react-hardhat-and-ether-js-with-examples-4fi2) 

Gracias.