📂 Detall del Servei 🍃 MongoDB
Base de dades NoSQL utilitzada per a l'emmagatzematge de dades crues i documents JSON sense esquema fix. Ideal per a capturar la sortida de la API de EGRETA (CRIS de la UAB, usant el producte Pure de Elsevier)
Aquest contenidor s'executa actualment en mode root. Queda pendent la valoració i migració a rootless.
A. Cicle de Vida i Reconstrucció
Per garantir la persistència de les dades NoSQL i l'accés des de l'exterior (port 8000), la comanda de recreació és la següent:
podman run -d \
--name MongoDB \
--restart on-failure \
-p 8000:27017 \
-v /dades/mongo8:/data/db:Z \
mongodb-community-server:latest
Nota d'Arquitectura:
- Persistència: Es mapeja
/dades/mongo8cap a/data/db. - Ports: El port estàndard de Mongo (27017) es mapeja al 8000 del host per seguir la política de ports del laboratori.
B. Configuració del Servei (Systemd)
El servei està gestionat per la unitat /etc/systemd/system/container-mongodb.service.
- Tipus:
simple(ambRemainAfterExit=yes). - Dependències: Vital que
/dades/mongo8estigui muntat, ja que MongoDB és molt sensible a la corrupció si el fitxer de bloqueig (mongod.lock) es gestiona sobre un FS no preparat.
[Unit]
Description=Podman container-mongodb.service
After=network-online.target local-fs.target
RequiresMountsFor=/dades/mongo8
[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Environment=CONTAINERS_CONF_LOG_LEVEL=error
Restart=on-failure
RestartSec=15s
Type=simple
ExecStartPre=-/usr/bin/podman stop -t 10 MongoDB
ExecStart=/usr/bin/podman --log-level=error start MongoDB
RemainAfterExit=yes
ExecStop=/usr/bin/podman stop -t 10 MongoDB
[Install]
WantedBy=multi-user.target
C. Receptes d'Operació (Cheat Sheet)
Gestió del Servei
- Estat:
systemctl status container-mongodb.service - Logs:
podman logs -f MongoDB
Interacció amb Dades (Shell)
Si es necessita entrar a la consola de MongoDB per realitzar consultes manuals:
podman exec -it MongoDB mongosh
Verificació des de Python
Comprovació ràpida de connectivitat des del host:
# Requereix pip install pymongo
from pymongo import MongoClient
client = MongoClient('localhost', 8000)
print(client.list_database_names())