Inici automàtic dels Dockers mitjançant systemd

De Wiki personal d'en Guillem Serrat
La revisió el 21:03, 25 gen 2026 per Guseba (discussió | contribucions) (Es crea la pàgina amb «== El problema del VPS en Azure amb Dockers == Actualment, el VPS que allotja totes les pràctiques del Seminari 7 de PHP està allotjat a Azure. El problema de tenir el VPS a Azure és que els seus preus són molt poc competitius, ja que un conjunt de recursos prou reduït per provocar despeses molt elevades. En canvi, amb OVH és possible obtenir pràcticament el mateix serveix amb els mateixos resultats amb un preu reduït pràcticament del 90%. Això provoc...».)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)

El problema del VPS en Azure amb Dockers

Actualment, el VPS que allotja totes les pràctiques del Seminari 7 de PHP està allotjat a Azure.

El problema de tenir el VPS a Azure és que els seus preus són molt poc competitius, ja que un conjunt de recursos prou reduït per provocar despeses molt elevades. En canvi, amb OVH és possible obtenir pràcticament el mateix serveix amb els mateixos resultats amb un preu reduït pràcticament del 90%.

Això provoca que s'hagi d'aturar el VPS cada cop que no es faci servir per estalviar diners.

El fet d'apagar el VPS comporta l'aturament de tots els dockers, i cada cop que es torna a posar en producció s'ha d'iniciar-los manualment.

És per això que es definirà un servei de systemd que executarà un script per aixecar tots els contenidors Docker que estiguin aturats cada cop que el sistema s'iniciï

Creació de l'script

Primerament, crearem un script amb nom iniciDockers.sh dins del directori /usr/sbin/ amb el següent contingut

#!/bin/bash
docker start $(docker ps -a -q -f status=exited)

Aquest script fa servir l'ordre docker start per aixecar un contenidor Docker, però enlloc d'especificar un Docker en concret, executem l'ordre docker ps -a per llistar els Dockers, indicant:

  • -q: que únicament retorni els ID dels Dockers
  • -f status=exited: que retorni els que tingui l'estat "exited", és a dir, aturats

D'aquesta manera, docker ps -a -q -f status=exited retorna tots els ID dels contenidors actualment aturats i l'ordre docker start els inicïa

Per últim, caldrà donar permisos d'execució al script

sudo chmod +x iniciDockers.sh

Creació del servei de systemd

Un cop creat l'scrip, crearem el servei de systemd que executarà l'script. Per això, dins del directori /etc/systemd/system/ crearem un arxiu anomenat iniciDockers.service.

[Unit]
Description= Servei de copies de seguretat
Requires=docker.service
After=docker.service
[Service]
Type=simple
ExecStart=/usr/sbin/iniciDockers.sh
User=guseba
# Necessari per poder fer que el servei s'executi al iniciar el sistema
[Install]
WantedBy=multi-user.target

Un cop creat, habilitarem el servei per tal que s'executi quan el sistema arranqui

sudo systemctl daemon-reload sudo systemctl enable iniciDockers.service