services: konifer: container_name: konifer # If building locally, comment out image: and uncomment the section below # build: # context: . # dockerfile: Dockerfile image: ghcr.io/dmaiken/konifer:latest ports: - "8080:8080" volumes: - ./konifer.conf:/app/config/konifer.conf environment: # Override sensitive config values using Env Vars PG_PASSWORD: konifer_password S3_SECRET_KEY: minio_secret_key depends_on: postgres: condition: service_healthy minio: condition: service_healthy networks: - konifer-net postgres: image: postgres:17-alpine container_name: konifer_postgres environment: POSTGRES_USER: konifer_user POSTGRES_PASSWORD: konifer_password POSTGRES_DB: konifer volumes: - pg_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U konifer_user -d konifer"] interval: 5s timeout: 5s retries: 5 networks: - konifer-net minio: image: quay.io/minio/minio container_name: konifer_minio command: server /data --console-address ":9001" ports: - "9000:9000" # S3 API Port - "9001:9001" # Web Console Port environment: MINIO_ROOT_USER: minio_admin MINIO_ROOT_PASSWORD: minio_secret_key volumes: - minio_data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 20s retries: 3 networks: - konifer-net # MinIO starts empty. This container creates the default bucket automatically. createbuckets: image: quay.io/minio/mc depends_on: minio: condition: service_healthy entrypoint: > /bin/sh -c " /usr/bin/mc alias set myminio http://minio:9000 minio_admin minio_secret_key; /usr/bin/mc mb myminio/konifer-assets; /usr/bin/mc anonymous set public myminio/konifer-assets; exit 0; " networks: - konifer-net volumes: pg_data: minio_data: networks: konifer-net: driver: bridge