Initial commit: OAuth 2.0 인증 시스템 with APISIX API Gateway
- FastAPI 백엔드 + MongoDB + Redis 구성 - React + Vite + TypeScript + shadcn/ui 프론트엔드 - Apache APISIX API Gateway 통합 - Docker Compose 기반 개발 환경 - 3단계 권한 체계 (System Admin, Group Admin, User) - 동적 테마 지원 - 환경별 설정 (dev/vei/prod) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
114
docker-compose-apisix.yml
Normal file
114
docker-compose-apisix.yml
Normal file
@ -0,0 +1,114 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
etcd:
|
||||
image: bitnami/etcd:3.5
|
||||
container_name: oauth-etcd
|
||||
restart: always
|
||||
volumes:
|
||||
- etcd_data:/bitnami/etcd
|
||||
environment:
|
||||
ALLOW_NONE_AUTHENTICATION: "yes"
|
||||
ETCD_ADVERTISE_CLIENT_URLS: http://etcd:2379
|
||||
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
|
||||
ports:
|
||||
- "2379:2379"
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
apisix:
|
||||
image: apache/apisix:3.8.0-debian
|
||||
container_name: oauth-apisix
|
||||
restart: always
|
||||
volumes:
|
||||
- ./apisix/config.yaml:/usr/local/apisix/conf/config.yaml:ro
|
||||
depends_on:
|
||||
- etcd
|
||||
ports:
|
||||
- "9080:9080" # HTTP
|
||||
- "9443:9443" # HTTPS
|
||||
- "9092:9092" # Control API
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
apisix-dashboard:
|
||||
image: apache/apisix-dashboard:3.0.1-alpine
|
||||
container_name: oauth-apisix-dashboard
|
||||
restart: always
|
||||
volumes:
|
||||
- ./apisix/apisix-dashboard.yaml:/usr/local/apisix-dashboard/conf/conf.yaml:ro
|
||||
ports:
|
||||
- "9000:9000"
|
||||
depends_on:
|
||||
- etcd
|
||||
- apisix
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
mongodb:
|
||||
image: mongo:7.0
|
||||
container_name: oauth-mongodb
|
||||
restart: always
|
||||
ports:
|
||||
- "27017:27017"
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: admin
|
||||
MONGO_INITDB_ROOT_PASSWORD: admin123
|
||||
MONGO_INITDB_DATABASE: oauth_db
|
||||
volumes:
|
||||
- mongodb_data:/data/db
|
||||
- ./oauth/backend/scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: oauth-redis
|
||||
restart: always
|
||||
ports:
|
||||
- "6379:6379"
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: ./oauth/backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: oauth-backend
|
||||
restart: always
|
||||
environment:
|
||||
- MONGODB_URL=mongodb://admin:admin123@mongodb:27017/oauth_db?authSource=admin
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- ENVIRONMENT=dev
|
||||
depends_on:
|
||||
- mongodb
|
||||
- redis
|
||||
volumes:
|
||||
- ./oauth/backend:/app
|
||||
- /app/__pycache__
|
||||
networks:
|
||||
- oauth-network
|
||||
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ./oauth/frontend
|
||||
dockerfile: Dockerfile
|
||||
container_name: oauth-frontend
|
||||
restart: always
|
||||
depends_on:
|
||||
- backend
|
||||
networks:
|
||||
- oauth-network
|
||||
|
||||
volumes:
|
||||
etcd_data:
|
||||
mongodb_data:
|
||||
redis_data:
|
||||
|
||||
networks:
|
||||
oauth-network:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user