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.ymlPara 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 27018rs.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/hostsTesteamos 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