services: db: restart: unless-stopped image: postgres:15-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: zitadel volumes: - postgres-data:/var/lib/postgresql/data networks: - zitadel healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 zitadel: restart: unless-stopped image: ghcr.io/zitadel/zitadel:v4.7.0 command: start-from-init --masterkey "MasterkeyNeedsToHave32Characters" environment: ZITADEL_EXTERNALDOMAIN: localhost ZITADEL_EXTERNALSECURE: false ZITADEL_TLS_ENABLED: false ZITADEL_DATABASE_POSTGRES_HOST: db ZITADEL_DATABASE_POSTGRES_PORT: 5432 ZITADEL_DATABASE_POSTGRES_DATABASE: zitadel ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME: postgres ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD: postgres ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE: disable ZITADEL_DATABASE_POSTGRES_USER_USERNAME: zitadel ZITADEL_DATABASE_POSTGRES_USER_PASSWORD: zitadel ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE: disable ZITADEL_FIRSTINSTANCE_LOGINCLIENTPATPATH: /current-dir/login-client.pat ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORDCHANGEREQUIRED: false ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_MACHINE_USERNAME: login-client ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_MACHINE_NAME: Automatically Initialized IAM_LOGIN_CLIENT ZITADEL_FIRSTINSTANCE_ORG_LOGINCLIENT_PAT_EXPIRATIONDATE: '2029-01-01T00:00:00Z' ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_REQUIRED: true ZITADEL_DEFAULTINSTANCE_FEATURES_LOGINV2_BASEURI: http://localhost:29000/ui/v2/login ZITADEL_OIDC_DEFAULTLOGINURLV2: http://localhost:29000/ui/v2/login/login?authRequest= ZITADEL_OIDC_DEFAULTLOGOUTURLV2: http://localhost:29000/ui/v2/login/logout?post_logout_redirect= ZITADEL_SAML_DEFAULTLOGINURLV2: http://localhost:29000/ui/v2/login/login?samlRequest= healthcheck: test: - CMD - /app/zitadel - ready interval: 10s timeout: 60s retries: 5 start_period: 10s user: "0" volumes: - .:/current-dir:delegated ports: - 28080:8080 - 29000:3000 networks: - zitadel depends_on: db: condition: service_healthy login: restart: unless-stopped image: ghcr.io/zitadel/zitadel-login:v4.7.0 environment: - ZITADEL_API_URL=http://localhost:28080 - NEXT_PUBLIC_BASE_PATH=/ui/v2/login - ZITADEL_SERVICE_USER_TOKEN_FILE=/current-dir/login-client.pat network_mode: service:zitadel user: "0" volumes: - .:/current-dir:delegated volumes: postgres-data: networks: zitadel: driver: bridge