Create file /etc/systemd/system/[email protected]
[Unit]
Description=%i service with docker compose
Requires=docker.service
After=docker.service
[Service]
Restart=always
WorkingDirectory=/apps/%i
# Remove old containers, images and volumes
ExecStartPre=/usr/local/bin/docker-compose down
# Compose up
ExecStart=/usr/local/bin/docker-compose up
# Compose down, remove containers and volumes
ExecStop=/usr/local/bin/docker-compose down
[Install]
WantedBy=multi-user.targetPlace your docker-compose.yml into /apps/myservice and call
systemctl start docker-compose@myservice
Create /etc/systemd/system/docker-cleanup.timer with this content:
[Unit]
Description=Docker cleanup timer
[Timer]
OnUnitInactiveSec=12h
[Install]
WantedBy=timers.targetAnd service file /etc/systemd/system/docker-cleanup.service:
[Unit]
Description=Docker cleanup
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
WorkingDirectory=/tmp
User=root
Group=root
ExecStart=/usr/bin/docker system prune -f
[Install]
WantedBy=multi-user.targetrun systemctl enable docker-cleanup.timer for enabling the timer