---
title: "Cómo instalar PostGIS, PgAdmin y PostgreSQL en Docker"
slug: "how-to-install-postgis-pgadmin-postgresql-in-docker"
published_at: "2022-11-22T22:25:41.000Z"
categories: "PostgreSQL, Manual de instalación de SQL, Tutoriales de SQL, Tutoriales de SQL para principiantes"
tags: "Docker, Instalación, Manual, PgAdmin, PgAdmin 4, PostGIS, PostgreSQL"
---

# Cómo instalar PostGIS, PgAdmin y PostgreSQL en Docker

> PostgreSQL debe ser uno de los servidores SQL más usados y avanzados. Vamos a aprender a instalarlo en un contenedor de Docker junto con PostGIS y PgAdmin.

**PostgreSQL** debe ser uno de los servidores SQL más usados y avanzados. **PostGIS** puede hacer que nuestra instalación de PostgreSQL sea más poderosa agregando geometría espacial y **PgAdmin 4** es el compañero perfecto para ambos. Ahora instalémoslos en contenedores de Docker.

![Imagen de PostgreSQL](/blog/creating-a-view-in-postgresql/image-2.png)

## Instalando Docker

Antes que nada, necesitamos instalar docker en nuestra PC/Servidor, por suerte ya cubrimos este tema en otro [post](/es/install-sql-server-in-docker-quick-guide).

Solo como recordatorio, nuestro entorno de Docker sería distinto si usáramos Linux, Mac o Windows, por lo tanto, las guías de instalación son un poco distintas para cada uno de estos entornos.

## Instalando PostgreSQL

PostgreSQL tiene una imagen para Docker como muchos otros servidores SQL, podríamos instalar PostgreSQL creando un archivo **docker-compose.yml** con este contenido:

```sql
version: '2'
services:
postgres:
image: 'postgres:latest'
restart: always
volumes:
- './postgres_data:/var/lib/postgresql/data'
environment:
- POSTGRES_PASSWORD=PASSWORD_HERE
ports:
- '5432:5432'
```

Después iríamos a la carpeta que contiene el archivo a través de nuestra consola preferida y ejecutaríamos:

```sql
docker-compose up -d
```

¡Y listo! Ya tendrías tu contenedor de docker configurado con PostgreSQL adentro…

¿Pero qué pasa con PgAdmin y PostGIS? Estas son herramientas poderosas que se pueden conectar a PostgreSQL.

## Corriendo un contenedor de Docker con PgAdmin

El archivo **docker-compose.yml** que haría esto posible sería:

```sql
version: '3.8'
services:
  pgadmin:
    container_name: PgAdmin_container
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: root@root.com
      PGADMIN_DEFAULT_PASSWORD: PASSWORD_HERE
    ports:
      - "5050:80"
```

Esto va a correr dos contenedores anidados

![Contenedores anidados de PostgreSQL](/blog/how-to-install-postgis-pgadmin-postgresql-in-docker/image-1-1024x176.png)

Accederías a **PgAdmin** yendo a [HTTP://127.0.0.1:5050/](http://127.0.0.1:5050/) y tendrías que conectarte a tu instancia de PostgreSQL usando la dirección IP LAN de tu computadora (para verla en Windows escribí IPCONFIG en CMD, en Linux IFCONFIG) (porque localhost sería el contenedor)

## Corriendo PostgreSQL y PgAdmin juntos en Docker

Si quisiéramos correr PostgreSQL y PgAdmin juntos, nuestro docker-compose.yml se vería así:

```sql
version: '3.8'
services:
  db:
    container_name: Postgres_Server
    image: 'postgres:latest'
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: PASSWORD_HERE
      POSTGRES_DB: DATABASE_NAME_HERE
    ports:
      - "5432:5432"
    volumes:
      - './postgres_data:/var/lib/postgresql/data'
  pgadmin:
    container_name: PgAdmin_container
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: root@root.com
      PGADMIN_DEFAULT_PASSWORD: PASSWORD_HERE
    ports:
      - "5050:80"
```

## Cómo instalar PostGIS en Docker

Primero, empecemos diciendo que PostGIS es una extensión de PostgreSQL, podríamos instalarla en nuestra instalación de PostgreSQL o podríamos usar la imagen de docker de PostGIS, en el segundo caso, nuestro **docker-compose.yml** se vería más o menos así:

```sql
version: '2'
services:
postgres:
image: 'postgis/postgis:latest'
restart: always
volumes:
- './postgres_data:/var/lib/postgresql/data'
environment:
- POSTGRES_PASSWORD=PASSWORD_HERE
ports:
- '5432:5432'
```

Esto va a instalar nuestro contenedor de docker con **PostgreSQL y PostGIS**, que va a convertir nuestra instalación de PostgreSQL en una base de datos espacial.

## Cómo instalar PostGIS, PostgreSQL y PgAdmin 4 en Docker

Por último, vamos a combinar nuestros códigos para **generar dos contenedores con PostGIS, PostgreSQL y PgAdmin 4**, nuestro **docker-compose.yml** va a ser:

```sql
version: '3.8'
services:
  db:
    container_name: Postgres_Server
    image: 'postgis/postgis:latest'
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: PASSWORD_HERE
      POSTGRES_DB: DATABASE_NAME_HERE
    ports:
      - "5432:5432"
    volumes:
      - './postgres_data:/var/lib/postgresql/data'
  pgadmin:
    container_name: PgAdmin_container
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: root@root.com
      PGADMIN_DEFAULT_PASSWORD: PASSWORD_HERE
    ports:
      - "5050:80"
```

Como podés ver, estamos creando contenedores anidados como hacemos cuando instalamos PostgreSQL y PgAdmin juntos, pero en este caso, estamos usando la imagen de PostGIS (que viene con PostgreSQL) en lugar de la imagen de PostgreSQL.

Si vas directo al final, después de hacer este docker-compose.yml deberías ir a tu consola preferida y ejecutar:

```sql
docker-compose up -d
```

## Conclusión

Docker es bastante simple de usar una vez que lo entendés bien, acá tenés [otro post](/es/how-to-install-mysql-on-docker) donde indagamos cada variable del archivo docker-compose.

Si querés saber más sobre PostGIS podés encontrarlo en la [página web de PostGIS](https://postgis.net/) que tiene mucha documentación en la que podés confiar.

Como siempre, espero que encuentres útil este tutorial, ¡y nos vemos en el próximo!

