services: app: image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}" container_name: solidtime restart: always labels: - "traefik.enable=true" - "traefik.http.routers.solidtime.entrypoints=http" - "traefik.http.routers.solidtime.rule=Host(`${SOLIDTIME_DOMAIN}`)" - "traefik.http.middlewares.solidtime-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.solidtime.middlewares=solidtime-https-redirect" - "traefik.http.routers.solidtime-secure.entrypoints=https" - "traefik.http.routers.solidtime-secure.rule=Host(`${SOLIDTIME_DOMAIN}`)" - "traefik.http.routers.solidtime-secure.tls=true" - "traefik.http.services.solidtime.loadbalancer.server.port=8000" - "traefik.docker.network=internal" networks: - internal - solidtime volumes: - "app-storage:/var/www/html/storage" - "logs:/var/www/html/storage/logs" environment: CONTAINER_MODE: http AUTO_DB_MIGRATE: true healthcheck: test: [ "CMD-SHELL", "curl --fail http://localhost:8000/health-check/up || exit 1" ] env_file: - laravel.env - .env depends_on: - database scheduler: image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}" container_name: solidtime-scheduler restart: always networks: - solidtime volumes: - "app-storage:/var/www/html/storage" - "logs:/var/www/html/storage/logs" environment: CONTAINER_MODE: scheduler healthcheck: test: [ "CMD-SHELL", "supervisorctl status scheduler:scheduler_00" ] env_file: - laravel.env depends_on: - database queue: restart: always image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}" container_name: solidtime-queue networks: - solidtime volumes: - "app-storage:/var/www/html/storage" - "logs:/var/www/html/storage/logs" environment: CONTAINER_MODE: worker WORKER_COMMAND: "php /var/www/html/artisan queue:work" healthcheck: test: [ "CMD-SHELL", "supervisorctl status worker:worker_00" ] env_file: - laravel.env depends_on: - database database: restart: always image: 'postgres:${SOLIDTIME_POSTGRES_VERSION:-16}' container_name: solidtime-db environment: PGPASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}' POSTGRES_DB: '${SOLIDTIME_POSTGRES_DATABASE:?error}' POSTGRES_USER: '${SOLIDTIME_POSTGRES_USERNAME:?error}' POSTGRES_PASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}' volumes: - 'database-storage:/var/lib/postgresql/data' networks: - solidtime healthcheck: test: - CMD - pg_isready - '-q' - '-d' - '${SOLIDTIME_POSTGRES_DATABASE}' - '-U' - '${SOLIDTIME_POSTGRES_USERNAME}' retries: 3 timeout: 5s gotenberg: image: gotenberg/gotenberg:8 container_name: solidtime-gotenberg networks: - solidtime healthcheck: test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ] networks: internal: external: true solidtime: driver: bridge volumes: database-storage: app-storage: logs: