# docker-compose/docker-compose-semaphore.yml services: semaphore: # Official upstream image, same version as the custom build. # Changing image and version separately keeps failures diagnosable. image: semaphoreui/semaphore:v2.18.3 container_name: semaphore user: "0:0" ports: - "3008:3000" environment: # Database config lives in /etc/semaphore/config.json SEMAPHORE_TMP_PATH: /var/lib/semaphore/projects SEMAPHORE_ADMIN: admin SEMAPHORE_ADMIN_NAME: admin SEMAPHORE_ADMIN_EMAIL: admin@localhost env_file: # Absolute path — the deploy dir is wiped on every playbook run - /data/compose/semaphore/semaphore.env volumes: - /data/compose/semaphore/db:/etc/semaphore - /data/compose/semaphore/projects:/var/lib/semaphore/projects - /data/compose/semaphore/backups:/opt/mikrotik_backups/ - /data/compose/semaphore/ansible.cfg:/etc/ansible/ansible.cfg:ro healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:3000/api/ping >/dev/null || exit 1"] interval: 10s timeout: 5s retries: 12 start_period: 20s restart: unless-stopped