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 -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
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
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