name: auto services: semaphore: image: ${DOCKER_IMAGE} container_name: ${COMPOSE_PROJECT_NAME}_app restart: unless-stopped environment: SEMAPHORE_DB_DIALECT: postgres SEMAPHORE_DB_HOST: ${DB_HOST} SEMAPHORE_DB_NAME: ${DB_NAME} SEMAPHORE_DB_USER: ${DB_USER} SEMAPHORE_DB_PASS: ${DB_PASSWORD} SEMAPHORE_ADMIN: ${SEMAPHORE_ADMIN} SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD} SEMAPHORE_ADMIN_NAME: ${SEMAPHORE_ADMIN_NAME} SEMAPHORE_ADMIN_EMAIL: ${ADMIN_EMAIL} SEMAPHORE_EMAIL_ALERT: "True" SEMAPHORE_EMAIL_SENDER: ${EMAIL_FROM} SEMAPHORE_EMAIL_HOST: ${EMAIL_SMTP_HOST} SEMAPHORE_EMAIL_PORT: ${EMAIL_SMTP_PORT} SEMAPHORE_EMAIL_USERNAME: ${EMAIL_SMTP_USER} SEMAPHORE_EMAIL_PASSWORD: ${EMAIL_SMTP_PASSWORD} SEMAPHORE_EMAIL_SECURE: "true" volumes: - semaphore_data:/var/lib/semaphore - semaphore_config:/etc/semaphore - semaphore_tmp:/tmp/semaphore # Semaphore has curl available healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/ping"] interval: 30s timeout: 10s retries: 3 start_period: 40s ports: - ${APP_PORT}:${APP_PORT} networks: - kompose_network # labels: # - 'traefik.enable=true' # - 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-redirect-web-secure.redirectscheme.scheme=https' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.middlewares=$COMPOSE_PROJECT_NAME-redirect-web-secure' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.rule=Host(`$TRAEFIK_HOST`)' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.entrypoints=web' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.rule=Host(`$TRAEFIK_HOST`)' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.tls.certresolver=resolver' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.entrypoints=web-secure' # - 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-web-secure-compress.compress=true' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.middlewares=$COMPOSE_PROJECT_NAME-web-secure-compress' # - 'traefik.http.services.$COMPOSE_PROJECT_NAME-web-secure.loadbalancer.server.port=$APP_PORT' # - 'traefik.docker.network=${NETWORK_NAME:-kompose}' semaphore-runner: image: ${RUNNER_IMAGE} container_name: ${COMPOSE_PROJECT_NAME}_runner restart: unless-stopped environment: SEMAPHORE_RUNNER_PRIVATE_KEY_FILE: /var/lib/semaphore/runner.key SEMAPHORE_WEB_ROOT: http://semaphore:3000 SEMAPHORE_RUNNER_REGISTRATION_TOKEN: ${JWT_TOKEN} volumes: - semaphore_data:/var/lib/semaphore - semaphore_config:/etc/semaphore - semaphore_tmp:/tmp/semaphore healthcheck: test: ["CMD-SHELL", "test -f /var/lib/semaphore/runner.key"] interval: 30s timeout: 5s retries: 3 networks: - kompose_network volumes: semaphore_data: semaphore_config: semaphore_tmp: networks: kompose_network: name: ${NETWORK_NAME:-kompose} external: true