MongoDB replicada para desarrollo local utilizando Podman

En esta ocasión vamos a levantar una base de datos MongoDB replicada, como la que se hizo en el tutorial de docker, para esto vamos a utilizar el siguiente archivo de configuración:

services:
  db1:
    restart: always
    image: mongo:latest
    command: --replSet rs0 --port 27018
    ports:
      - 27018:27018
    volumes:
      - db1:/data/db
  db2:
    restart: always
    image: mongo:latest
    command: --replSet rs0 --port 27019
    ports:
      - 27019:27019
    volumes:
      - db2:/data/db
volumes:
  db1:
  db2:
docker-compose.yml

Para levantar el entorno y entramos al contenedor vamos a ocupar:

# crear las máquinas virtuales
podman-compose -p mongo up -d

# listar contendores
podman ps

# accede al contenedor por el puerto 27018 o 27019
podman exec -it <id-del-contenedor> mongo --port <puerto-de-mongo>

# ejemplo
podman exec -it 1a5f5e82bed8 mongosh --port 27018
rs.initiate({
  "_id": "rs0",
  "members": [
    {
      "_id": 0,
      "host": "db1:27018"
    },
    {
      "_id": 1,
      "host": "db2:27019"
    }
  ]
})

Debemos agregar los hostname db1 y db2 a nuestro archivo /etc/hosts

127.0.0.1   localhost localhost.localdomain db1 db2
/etc/hosts

Testeamos la conexión con:

mongosh "mongodb://127.0.0.1:27018,127.0.0.1:27019/?replicaSet=rs0"

Advertencia: Cuando se reinicie la computadora es necesario volver a cargar el compose con podman-compose, no he encontrado una forma de hacer que esto se haga automáticamente, antes era posible con podman generate systemd, pero ahora esa opción está deprecada y la nueva forma con Quadlets no me queda del todo claro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *