#### SERVICES services: # postgres postgres: container_name: kestra-postgres hostname: kestra-postgres environment: PGDATA: /var/lib/postgresql/data/kestra POSTGRES_DB: kestra_db POSTGRES_PASSWORD: 'P@ssword!Here!123456' POSTGRES_USER: kestra_user TZ: Europe/Paris image: postgres:15.6-alpine volumes: - ./data:/var/lib/postgresql/data:rw healthcheck: test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] interval: 30s timeout: 10s retries: 10 restart: always # kestra kestra: container_name: kestra-app hostname: kestra-app environment: KESTRA_CONFIGURATION: | datasources: postgres: url: jdbc:postgresql://postgres:5432/kestra_db driverClassName: org.postgresql.Driver username: kestra_user password: P@ssword!Here!123456 kestra: server: basic-auth: enabled: false username: "admin@kestra.io" # it must be a valid email address password: kestra repository: type: postgres storage: type: local local: base-path: "/app/storage" queue: type: postgres tasks: tmp-dir: path: /tmp/kestra-wd/tmp url: http://localhost:8080/ image: kestra/kestra:latest-full pull_policy: always # Note that this setup with a root user is intended for development purpose. For production deployments, you might prefer a version without a root user. # Our base image runs without root, but the Docker Compose implementation needs root to access the Docker socket # This version is rootless but more complex https://github.com/kestra-io/kestra/blob/develop/docker-compose-dind.yml user: "root" command: server standalone --worker-thread=128 volumes: - ./kestra-data:/app/storage:rw - /var/run/docker.sock:/var/run/docker.sock - ./kestra-wd:/tmp/kestra-wd:rw ports: - "8088:8080" - "8089:8081" depends_on: postgres: condition: service_started restart: always