docker compose

docker compose (без дефиса) — НОВЫЙ вариант. Встроен в docker CLI (начиная с Docker 20.10+)

docker compose up -d | docker compose down

docker compose --project-directory /opt/syncthing up -d

docker compose --project-directory /opt/syncthing down

отобразить статус контейнеров

docker compose ps

docker compose --project-directory /opt/syncthing ps

Проверяет и валидирует ваш docker-compose.yaml

docker compose -f /opt/syncthing/docker-compose.yml config --quiet

Флаг --quiet подавляет вывод (stdout), и возвращает только код завершения:
0 — если конфигурация валидна; 1 — если есть ошибки (синтаксис, недопустимые параметры и т. д.)

Запуск от имени служебного пользоватлея

Допустим наш служебный польтзоватле называется syncthing

addgroup --system --gid 3113 syncthing

adduser --system --gecos "Syncthing file synchronization system" \ --disabled-password --uid 3113 --ingroup syncthing \ --shell /sbin/nologin --home /opt/syncthing/data syncthing

Добавляем польовтеля syncthing в группу docker

usermod -aG docker syncthing

Проверка

id syncthing

service

nano /etc/systemd/system/syncthing.service

[Unit]
Description=Syncthing via Docker Compose
Requires=docker.service
After=docker.service

[Service]
Type=simple
Restart=always
RestartSec=5
User=syncthing
Group=docker
WorkingDirectory=/opt/syncthing
ExecStart=/usr/bin/docker compose --file /opt/syncthing/docker-compose.yml up
ExecStop=/usr/bin/docker  compose --file /opt/syncthing/docker-compose.yml down

[Install]
WantedBy=multi-user.target

В файле syncthing.service описаны условия запуска контейнера syncthing такие, как: проверка запущенного демона docker, выполнение перезапуска сервиса при падении (с интервалом в 5 сек.), определение пользователя/группы от имени которого нужно запускать сервис и собственно сами команды запуска/остановки этого сервиса.

systemctl enable --now syncthing

Sudo

cat /etc/sudoers.d/syncthing_sudoers

Cmnd_Alias SYNC = \
    /usr/bin/docker compose --file /opt/syncthing/docker-compose.yml up, \
    /usr/bin/docker compose --file /opt/syncthing/docker-compose.yml down

syncthing ALL = (:docker) NOPASSWD: SYNC

Проверяем синтаксис

visudo --check --file=/opt/syncthing/syncthing_sudoers