Rode isto no diretório onde docker-compose.yml está localizado:
create-docker-compose-service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdinEste script criará automaticamente um serviço systemd que inicia docker-compose up e desliga usando docker-compose down. Nosso script também fará systemctl enable do script (i.e. iniciar automaticamente no boot) e systemctl start (iniciá-lo imediatamente).
Como funciona
O comando acima baixará o script do TechOverflow e o rodará no bash:
create-docker-compose-service.sh
#!/bin/bash
# Criar um serviço systemd que autoinicia e gerencia uma instância docker-compose no diretório atual
# by Uli Köhler - https://techoverflow.net
# Licensed as CC0 1.0 Universal
SERVICENAME=$(basename $(pwd))
echo "Creating systemd service... /etc/systemd/system/${SERVICENAME}.service"
# Criar arquivo de serviço systemd
sudo cat >/etc/systemd/system/$SERVICENAME.service <<EOF
[Unit]
Description=$SERVICENAME
Requires=docker.service
After=docker.service
[Service]
Restart=always
User=root
Group=docker
TimeoutStopSec=15
WorkingDirectory=$(pwd)
# Desligar contêiner (se em execução) quando a unidade for iniciada
ExecStartPre=$(which docker-compose) -f docker-compose.yml down
# Iniciar contêiner quando a unidade for iniciada
ExecStart=$(which docker-compose) -f docker-compose.yml up
# Parar contêiner quando a unidade for parada
ExecStop=$(which docker-compose) -f docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
echo "Enabling & starting $SERVICENAME"
# Autoiniciar serviço systemd
sudo systemctl enable $SERVICENAME.service
# Iniciar serviço systemd agora
sudo systemctl start $SERVICENAME.serviceO nome do serviço é o nome do diretório:
example.sh
SERVICENAME=$(basename $(pwd))Agora criaremos o arquivo de serviço em /etc/systemd/system/${SERVICENAME}.service usando o modelo embutido no script
O script determinará automaticamente a localização do docker-compose usando $(which docker-compose) e finalmente habilitará e iniciará o serviço systemd:
enable-start-service.sh
# Autoiniciar serviço systemd
sudo systemctl enable $SERVICENAME.service
# Iniciar serviço systemd agora
sudo systemctl start $SERVICENAME.serviceIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow