Files
home/Projects/kompose/auto/compose.yaml
2025-10-10 13:03:56 +02:00

85 lines
3.1 KiB
YAML

name: auto
services:
semaphore:
image: ${DOCKER_IMAGE}
container_name: ${COMPOSE_PROJECT_NAME}_app
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
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