gitdataai/docker/docker-compose.yml
2026-06-01 22:04:17 +08:00

178 lines
5.0 KiB
YAML

services:
postgres:
image: postgres:16-alpine
container_name: gitdata-postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-gitdata}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-gitdata123}
POSTGRES_DB: ${POSTGRES_DB:-app}
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-gitdata}"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: gitdata-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
qdrant:
image: qdrant/qdrant:latest
container_name: gitdata-qdrant
ports:
- "6333:6333"
volumes:
- qdrant_data:/qdrant/storage
restart: unless-stopped
nats:
image: nats:alpine
container_name: gitdata-nats
ports:
- "4222:4222"
- "8222:8222"
command: "--jetstream"
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: gitdata-minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-admin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-mysecret123}
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
restart: unless-stopped
gitdata:
image: ${IMAGE_REGISTRY:-harbor.gitdata.me/app/}gitdata-gitdata:${IMAGE_TAG:-latest}
container_name: gitdata-api
environment:
APP_DATABASE_URL: postgres://${POSTGRES_USER:-gitdata}:${POSTGRES_PASSWORD:-gitdata123}@postgres:5432/${POSTGRES_DB:-app}
APP_REDIS_URLS: redis://redis:6379
APP_QDRANT_URL: http://qdrant:6333/
NATS_URL: nats://nats:4222
APP_STORAGE_S3_ENDPOINT_URL: http://minio:9000
APP_STORAGE_S3_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-admin}
APP_STORAGE_S3_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-mysecret123}
APP_STORAGE_S3_BUCKET: ${APP_STORAGE_S3_BUCKET:-gitdata}
APP_SESSION_SECRET: ${APP_SESSION_SECRET:-supersecretdevkey123}
APP_GIT_RPC_ADDR: gitpod
APP_GIT_RPC_PORT: "50051"
ports:
- "8080:8080"
volumes:
- gitdata_repos:/app/data/repos
- gitdata_files:/app/data/files
- gitdata_avatar:/app/data/avatar
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
qdrant:
condition: service_started
nats:
condition: service_started
minio:
condition: service_started
restart: unless-stopped
email:
image: ${IMAGE_REGISTRY:-harbor.gitdata.me/app/}gitdata-email:${IMAGE_TAG:-latest}
container_name: gitdata-email
environment:
APP_DATABASE_URL: postgres://${POSTGRES_USER:-gitdata}:${POSTGRES_PASSWORD:-gitdata123}@postgres:5432/${POSTGRES_DB:-app}
APP_REDIS_URLS: redis://redis:6379
NATS_URL: nats://nats:4222
APP_SMTP_HOST: ${APP_SMTP_HOST:-mailhog}
APP_SMTP_PORT: ${APP_SMTP_PORT:-1025}
APP_SMTP_USERNAME: ${APP_SMTP_USERNAME:-dev}
APP_SMTP_PASSWORD: ${APP_SMTP_PASSWORD:-dev}
APP_SMTP_FROM: ${APP_SMTP_FROM:-Gitdata <noreply@localhost>}
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
nats:
condition: service_started
restart: unless-stopped
gitpod:
image: ${IMAGE_REGISTRY:-harbor.gitdata.me/app/}gitdata-gitpod:${IMAGE_TAG:-latest}
container_name: gitdata-gitpod
environment:
APP_DATABASE_URL: postgres://${POSTGRES_USER:-gitdata}:${POSTGRES_PASSWORD:-gitdata123}@postgres:5432/${POSTGRES_DB:-app}
APP_REDIS_URLS: redis://redis:6379
APP_GIT_HTTP_PORT: "8080"
APP_GIT_RPC_PORT: "50051"
APP_SSH_PORT: "2222"
ports:
- "2222:2222"
- "8081:8080"
- "50051:50051"
volumes:
- gitdata_repos:/app/data/repos
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
gitsync:
image: ${IMAGE_REGISTRY:-harbor.gitdata.me/app/}gitdata-gitsync:${IMAGE_TAG:-latest}
container_name: gitdata-gitsync
environment:
APP_DATABASE_URL: postgres://${POSTGRES_USER:-gitdata}:${POSTGRES_PASSWORD:-gitdata123}@postgres:5432/${POSTGRES_DB:-app}
APP_REDIS_URLS: redis://redis:6379
APP_GITSYNC_HEALTH_PORT: "8081"
ports:
- "8082:8081"
volumes:
- gitdata_repos:/app/data/repos
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
web:
image: ${IMAGE_REGISTRY:-harbor.gitdata.me/app/}gitdata-web:${IMAGE_TAG:-latest}
container_name: gitdata-web
ports:
- "80:80"
depends_on:
- gitdata
restart: unless-stopped
volumes:
postgres_data:
redis_data:
qdrant_data:
minio_data:
gitdata_repos:
gitdata_files:
gitdata_avatar: