Work-Adventure/install/Add docker-compose as systemd unit

From Technologia Incognita
Jump to: navigation, search

Docker compose as a systemd unit

SystemD calling binaries using an absolute path. In my case is prefixed by /usr/bin, you should use paths specific for your environment.

Create a general /etc/systemd/system/docker-compose@.service:

[Unit]
Description=%i service with docker compose
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=true
# for each of your services
# place your .env and docker-compose.yaml files in a subdirectory of the WorkingDirectory
WorkingDirectory=/opt/%i
ExecStart=/usr/bin/docker-compose up -d --remove-orphans
ExecStop=/usr/bin/docker-compose down

[Install]
WantedBy=multi-user.target

Place the docker-compose.yaml and .env files of any of your services (traefik-infra, workadventure ...) in a subdirectory of /opt (example /opt/workadventure) and call

systemctl start docker-compose@yourservice

Example:

For /opt/traefik-infra and /opt/workadventure run

systemctl start docker-compose@traefik-infra
systemctl start docker-compose@workadventure


To have them started automatically after system boot, run once

systemctl enable docker-compose@traefik-infra
systemctl enable docker-compose@workadventure
systemctl daemon-reload


More information and discussion