Difference between revisions of "Work-Adventure/install/Add docker-compose as systemd unit"
(→Docker compose as a systemd unit) |
m (page section layout chg) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
== Docker compose as a systemd unit == | == Docker compose as a systemd unit == | ||
SystemD calling binaries using an absolute path. In my case is prefixed by <code>/usr/bin</code>, you should use paths specific for your environment. | SystemD calling binaries using an absolute path. In my case is prefixed by <code>/usr/bin</code>, you should use paths specific for your environment. | ||
− | Create <code>/etc/systemd/system/docker-compose@.service</code>: | + | Create a general <code>/etc/systemd/system/docker-compose@.service</code>: |
<pre> | <pre> | ||
Line 16: | Line 14: | ||
Type=oneshot | Type=oneshot | ||
RemainAfterExit=true | RemainAfterExit=true | ||
− | WorkingDirectory=/opt | + | # 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 | ExecStart=/usr/bin/docker-compose up -d --remove-orphans | ||
ExecStop=/usr/bin/docker-compose down | ExecStop=/usr/bin/docker-compose down | ||
Line 24: | Line 24: | ||
</pre> | </pre> | ||
− | Place | + | Place the <code>docker-compose.yaml</code> and <code>.env</code> files of any of your services (traefik-infra, workadventure ...) in a subdirectory of <code>/opt</code> (example <code>/opt/workadventure</code>) and call |
+ | |||
+ | <pre> | ||
+ | systemctl start docker-compose@yourservice | ||
+ | </pre> | ||
+ | |||
+ | Example: | ||
+ | |||
+ | For <code>/opt/traefik-infra</code> and <code>/opt/workadventure</code> run | ||
+ | <pre> | ||
+ | systemctl start docker-compose@traefik-infra | ||
+ | systemctl start docker-compose@workadventure | ||
+ | </pre> | ||
+ | |||
+ | To have them started automatically after system boot, run once | ||
<pre> | <pre> | ||
− | systemctl | + | systemctl enable docker-compose@traefik-infra |
+ | systemctl enable docker-compose@workadventure | ||
+ | systemctl daemon-reload | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | == More information and discussion == | ||
+ | |||
+ | * https://gist.github.com/mosquito/b23e1c1e5723a7fd9e6568e5cf91180f |
Latest revision as of 11:44, 20 March 2021
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