Files
production-infra/kimai-scheidle/docker-compose.yaml
2025-11-20 11:30:02 +00:00

74 lines
2.2 KiB
YAML

volumes:
scheidle-app:
name: scheidle-app
scheidle-db:
name: scheidle-db
networks:
proxy:
external: true
scheidle:
name: scheidle
external: false
services:
scheidle-app:
image: kimai/kimai2:fpm
container_name: scheidle-app
hostname: scheidle-app
restart: unless-stopped
environment:
ADMINMAIL: ${ADMIN_USER}
ADMINPASS: ${ADMIN_PASS}
DATABASE_URL: mysql://${DB_USER}:${DB_PASS}@scheidle-db/${DB_NAME}?charset=utf8&serverVersion=8.1.0
APP_SECRET: ${APP_SECRET}
depends_on:
- scheidle-db
networks:
- scheidle
volumes:
- scheidle-app:/opt/kimai/public
scheidle-web:
image: nginx:alpine
container_name: scheidle-web
hostname: scheidle-web
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.kimai-scheidle.rule=Host(`scheidle.ri-st.de`)"
- "traefik.http.routers.kimai-scheidle.entrypoints=web"
- "traefik.http.routers.kimai-scheidle.middlewares=kimai-scheidle"
- "traefik.http.middlewares.kimai-scheidle.redirectscheme.scheme=https"
- "traefik.http.routers.kimai-scheidle-secure.rule=Host(`scheidle.ri-st.de`)"
- "traefik.http.routers.kimai-scheidle-secure.entrypoints=websecure"
- "traefik.http.routers.kimai-scheidle-secure.tls=true"
- "traefik.http.routers.kimai-scheidle-secure.tls.certresolver=cs"
- "traefik.http.routers.kimai-scheidle-secure.service=kimai-scheidle-secure"
- "traefik.http.services.kimai-scheidle-secure.loadbalancer.server.port=80"
depends_on:
- scheidle-app
networks:
- proxy
- scheidle
volumes:
- scheidle-app:/opt/kimai/public:ro
- ${PWD}/kimai.conf:/etc/nginx/conf.d/default.conf
scheidle-db:
image: mysql:8
container_name: scheidle-db
hostname: scheidle-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
MYSQL_DATABASE: ${DB_NAME}
volumes:
- scheidle-db:/var/lib/mysql
networks:
- scheidle
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -u$${DB_USER} -p$$(DB_PASS)"]