From c612802a56a9f33df988c7d98c0d2e63d229fe23 Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Sat, 29 Nov 2025 19:03:21 +0000 Subject: [PATCH] added docker compose --- docker-compose.yml | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0783c32 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,71 @@ +version: "3.8" + +networks: + traefik: + external: true + name: traefik_default + app: + driver: bridge + +services: + db: + image: mariadb:10 + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + environment: + MYSQL_ROOT_PASSWORD: supersecret + MYSQL_DATABASE: vikunja + MYSQL_USER: vikunja + MYSQL_PASSWORD: changeme + volumes: + - ./db:/var/lib/mysql + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u$${MYSQL_USER} -p$${MYSQL_PASSWORD} || exit 1"] + interval: 5s + timeout: 3s + retries: 20 + start_period: 30s + restart: unless-stopped + networks: + - app + + vikunja: + image: vikunja/vikunja:0.24.6 + depends_on: + db: + condition: service_healthy + environment: + VIKUNJA_SERVICE_PUBLICURL: https://vikunja.rozic-dev.com + VIKUNJA_DATABASE_TYPE: mysql + VIKUNJA_DATABASE_HOST: db + VIKUNJA_DATABASE_DATABASE: vikunja + VIKUNJA_DATABASE_USER: vikunja + VIKUNJA_DATABASE_PASSWORD: changeme + VIKUNJA_SERVICE_JWTSECRET: "replace-with-a-long-random-secret" + VIKUNJA_SERVICE_ENABLEREGISTRATION: "false" + # ports: + # - "3456:3456" # Not needed when using Traefik + volumes: + - ./files:/app/vikunja/files + labels: + - traefik.enable=true + - traefik.docker.network=traefik_default + - traefik.http.routers.vikunja.rule=Host(`vikunja.rozic-dev.com`) + - traefik.http.routers.vikunja.entrypoints=websecure + - traefik.http.routers.vikunja.tls=true + - traefik.http.routers.vikunja.tls.certresolver=letsencrypt + - traefik.http.routers.vikunja.service=vikunja + - traefik.http.services.vikunja.loadbalancer.server.scheme=http + - traefik.http.services.vikunja.loadbalancer.server.port=3456 + - traefik.http.middlewares.vikunja-compress.compress=true + - traefik.http.middlewares.vikunja-headers.headers.stsSeconds=31536000 + - traefik.http.middlewares.vikunja-headers.headers.stsIncludeSubdomains=true + - traefik.http.middlewares.vikunja-headers.headers.stsPreload=true + - traefik.http.middlewares.vikunja-headers.headers.contentTypeNosniff=true + - traefik.http.middlewares.vikunja-headers.headers.browserXssFilter=true + - traefik.http.routers.vikunja.middlewares=vikunja-compress,vikunja-headers + restart: unless-stopped + networks: + - app + - traefik