- Angular 17 with standalone components - Angular Material + Tailwind CSS - OIDC authorization code flow with Authentik - Role-based access control (USER, DEVELOPER, APPROVER, ADMIN) - Dashboard with pending requests, tunnel list, and create mapping - Nginx reverse proxy to backend API - Multi-container Docker Compose setup (frontend, backend, postgres) - Environment-based configuration (local, test, prod)
62 lines
1.6 KiB
YAML
62 lines
1.6 KiB
YAML
services:
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
args:
|
|
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
|
|
- OAUTH_REDIRECT_URI=${OAUTH_REDIRECT_URI}
|
|
container_name: cftunnels-frontend_${ENV}
|
|
ports:
|
|
- "${FRONTEND_PORT:-80}:80"
|
|
environment:
|
|
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
|
|
- OAUTH_REDIRECT_URI=${OAUTH_REDIRECT_URI}
|
|
depends_on:
|
|
- app
|
|
restart: unless-stopped
|
|
networks:
|
|
- cftunnels-network
|
|
|
|
app:
|
|
image: gitea.hithomelabs.com/hithomelabs/cftunnels:${ENV}
|
|
container_name: cftunnels_${ENV}
|
|
ports:
|
|
- "${HOST_PORT:-8080}:8080"
|
|
environment:
|
|
- CLOUDFLARE_ACCOUNT_ID=${CLOUDFLARE_ACCOUNT_ID}
|
|
- CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
|
|
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
|
|
- ENV=${ENV}
|
|
- OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}
|
|
- OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}
|
|
- HOST_PORT=${HOST_PORT}
|
|
- POSTGRES_USER=${POSTGRES_USERNAME}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
|
- SWAGGER_OAUTH_CLIENT_ID=${SWAGGER_OAUTH_CLIENT_ID}
|
|
env_file:
|
|
- stack.env
|
|
depends_on:
|
|
- postgres
|
|
restart: unless-stopped
|
|
networks:
|
|
- cftunnels-network
|
|
|
|
postgres:
|
|
image: postgres:15-alpine
|
|
container_name: cftunnel-db-${ENV}
|
|
environment:
|
|
POSTGRES_DB: cftunnel
|
|
POSTGRES_USER: ${POSTGRES_USERNAME}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${DB_PORT:-5432}:5432"
|
|
volumes:
|
|
- ${DB_PATH}:/var/lib/postgresql/data
|
|
networks:
|
|
- cftunnels-network
|
|
|
|
networks:
|
|
cftunnels-network:
|
|
driver: bridge
|