70 lines
1.8 KiB
YAML
70 lines
1.8 KiB
YAML
version: "3.5"
|
|
services:
|
|
traefik:
|
|
image: "traefik:v2.2"
|
|
ports:
|
|
- "443:443"
|
|
volumes:
|
|
- "./traefik.yaml:/etc/traefik/traefik.yaml:ro"
|
|
- "./letsencrypt:/letsencrypt"
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
restart: unless-stopped
|
|
|
|
sqldb:
|
|
image: mysql:5.7
|
|
environment:
|
|
- MYSQL_DATABASE=kimai
|
|
- MYSQL_USER=kimai
|
|
- MYSQL_PASSWORD
|
|
- MYSQL_RANDOM_ROOT_PASSWORD=yes
|
|
volumes:
|
|
- ./db_data:/var/lib/mysql
|
|
command: --default-storage-engine innodb
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: mysqladmin -pchangemeplease ping -h localhost
|
|
interval: 20s
|
|
start_period: 10s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
volumes:
|
|
- ./nginx_site.conf:/etc/nginx/conf.d/default.conf:ro
|
|
- ./public:/opt/kimai/public:ro
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- kimai
|
|
healthcheck:
|
|
test: wget --spider http://nginx/health || exit 1
|
|
interval: 20s
|
|
start_period: 10s
|
|
timeout: 10s
|
|
retries: 3
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.kimai.rule=Host(`${APP_DOMAIN}`)"
|
|
- "traefik.http.routers.kimai.entrypoints=websecure"
|
|
- "traefik.http.routers.kimai.tls.certresolver=myresolver"
|
|
- "traefik.http.services.kimai.loadbalancer.server.port=80"
|
|
- "traefik.http.routers.kimai.middlewares=default-headers@file"
|
|
|
|
kimai:
|
|
image: kimai/kimai2:fpm-alpine-1.8-prod
|
|
environment:
|
|
- APP_ENV=prod
|
|
- TRUSTED_HOSTS=localhost
|
|
- ADMINMAIL
|
|
- ADMINPASS
|
|
volumes:
|
|
- ./public:/opt/kimai/public
|
|
- ./kimai:/opt/kimai/var
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: wget --spider http://nginx || exit 1
|
|
interval: 20s
|
|
start_period: 10s
|
|
timeout: 10s
|
|
retries: 3
|