Cuando usamos crontabo el /etc/rc.localarchivo obsoleto , necesitamos un retraso (por ejemplo sleep 10, dependiendo de la máquina) para asegurarnos de que los servicios del sistema estén disponibles. Por lo general, systemd(o upstart) se usa para administrar qué servicios se inician cuando se inicia el sistema. Puede intentar usar una configuración similar para esto:
# /etc/systemd/system/docker-compose-app.service
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
O, si quieres correr sin la -dbandera:
# /etc/systemd/system/docker-compose-app.service
[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
Cambie el WorkingDirectoryparámetro con la ruta de su proyecto acoplada. Y habilite el servicio para que se inicie automáticamente:
systemctl enable docker-compose-app
--restart alwayso--restart unless-stoppedo en docker-compose.yml userestart: always-> Ref . ¡Pero quizás no funcionó en algunos contenedores!