zitadel-actions-manager 0.5.3

Sync v1 and v2 Zitadel IdP actions defined in a declarative way
# SPDX-FileCopyrightText: 2025 Famedly GmbH (info@famedly.com)
#
# SPDX-License-Identifier: Apache-2.0

services:
  zitadel:
    container_name: zitadel
    restart: 'unless-stopped'
    image: 'ghcr.io/zitadel/zitadel:v4.0.1'
    command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled'
    environment:
      - 'ZITADEL_FIRSTINSTANCE_MACHINEKEYPATH=/machinekey/service-account.json'
      - 'ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINE_USERNAME=zitadel-admin-sa'
      - 'ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINE_NAME=Admin'
      - 'ZITADEL_FIRSTINSTANCE_ORG_MACHINE_MACHINEKEY_TYPE=1'
      - 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME=root'
      - 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD=RootPassword1!'
      - 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORDCHANGEREQUIRED=false'

      - 'ZITADEL_EXTERNALDOMAIN=localhost'
      - 'ZITADEL_EXTERNALPORT=9310'
      - 'ZITADEL_PORT=9310'
      - 'ZITADEL_EXTERNAL=localhost'
      - 'ZITADEL_TLS_ENABLED=false'

      - 'ZITADEL_DATABASE_POSTGRES_HOST=postgres'
      - 'ZITADEL_DATABASE_POSTGRES_PORT=5432'
      - 'ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=postgres'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=password'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable'
      - 'ZITADEL_EXTERNALSECURE=false'
      - 'ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED=false'
    depends_on:
      postgres: { condition: service_healthy }
    ports:
      - '9310:9310'
    volumes:
      - ./docker/zitadel/:/machinekey/:rw
    healthcheck:
      test: ["CMD", "/app/zitadel", "ready"]
      interval: '3s'
      retries: 20
      start_period: '10s'

  postgres:
    container_name: postgres
    restart: "unless-stopped"
    image: postgres:16.1-alpine
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=password
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    ports:
      - 9876:5432/tcp
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -p 5432"]
      interval: 5s
      retries: 10
      start_period: 5s

volumes:
  postgresql-data: