auth-yes/infra/setup/compose.ts
google-labs-jules[bot] 779f890b2f Refactored the 1,000+ line setup.ts into sub-modules
- Extracted CLI commands into infra/setup/cli.ts
- Extracted docker compose configuration to infra/setup/compose.ts
- Extracted env variable generation to infra/setup/env.ts
- Extracted build commands to infra/setup/build.ts
- Retained infra/setup.ts as a simple entrypoint orchestrator

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 00:34:24 +00:00

105 lines
2.5 KiB
TypeScript

export function generateDockerCompose(): string {
return `version: "3.8"
services:
auth-api:
image: \${REG}/library/auth-yes-api:latest
env_file: stack.env
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-net"
- "traefik.http.routers.auth-api.rule=Host(\`\${SYSTEM_DOMAIN}\`)"
- "traefik.http.routers.auth-api.entrypoints=websecure"
- "traefik.http.routers.auth-api.tls=true"
- "traefik.http.services.auth-api.loadbalancer.server.port=8000"
- "traefik.http.middlewares.auth-forward.forwardauth.address=http://auth-api:8000/api/forward-auth"
- "traefik.http.middlewares.auth-forward.forwardauth.trustForwardHeader=true"
- "traefik.http.middlewares.auth-forward.forwardauth.authResponseHeaders=X-Forwarded-User-Id,X-Forwarded-User,X-Forwarded-Scopes,X-Forwarded-App-Id"
expose:
- "8000"
depends_on:
- auth-db
- auth-valkey
networks:
- default
- traefik-net
volumes:
- spire-socket:/var/run/spire:ro
auth-db:
image: acr.atyg.org/library/postgres:18-alpine
environment:
- POSTGRES_USER=\${POSTGRES_USER}
- POSTGRES_PASSWORD=\${POSTGRES_PASSWORD}
- POSTGRES_DB=\${POSTGRES_DB}
volumes:
- auth-db-data:/var/lib/postgresql
networks:
- default
auth-valkey:
image: acr.atyg.org/valkey/valkey:8-alpine
networks:
- default
volumes:
auth-db-data:
driver: local
driver_opts:
type: none
device: \${DB_DATA_PATH}
o: bind
spire-socket:
name: spire-socket
networks:
default:
name: auth-internal-net
traefik-net:
external: true
`;
}
export function generateSpireDockerCompose(): string {
return `version: "3.8"
services:
spire-server:
image: \${REG}/library/spire-server:latest
container_name: spire-server
hostname: spire-server
networks:
- auth-internal-net
volumes:
- spire-data:/opt/spire
spire-agent:
image: \${REG}/library/spire-agent:latest
container_name: spire-agent
hostname: spire-agent
pid: host
depends_on:
- spire-server
networks:
- auth-internal-net
volumes:
- spire-data:/opt/spire
- spire-socket:/var/run/spire
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
spire-data:
driver: local
driver_opts:
type: none
device: \${SPIRE_DATA_PATH}
o: bind
spire-socket:
name: spire-socket
networks:
auth-internal-net:
external: true
`;
}