migrate from github

This commit is contained in:
2026-07-15 23:28:04 +08:00
commit eb25aa19d9
17 changed files with 1433 additions and 0 deletions
+324
View File
@@ -0,0 +1,324 @@
services:
proto-gen:
build:
context: ../proto
dockerfile: ../deploy/Dockerfile.proto-gen
image: yoresee_doc_proto_gen:latest
container_name: yoresee_doc_proto_gen
volumes:
- ../proto:/workspace/proto
- ../backend/pkg/gen:/workspace/backend/pkg/gen
- ../collab-go/pkg/gen:/workspace/collab-go/pkg/gen
- ../frontend/src/gen:/workspace/frontend/src/gen
- ../collab/src/gen:/workspace/collab/src/gen
nginx:
image: nginx:alpine
container_name: yoresee_doc_nginx
ports:
- "${NGINX_HTTP_PORT:-8080}:80"
- "${NGINX_HTTPS_PORT:-8443}:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
- ./logs/nginx:/var/log/nginx
depends_on:
- frontend
- backend
- collab
- minio
networks:
- yoresee_doc_network
restart: unless-stopped
frontend:
build:
context: ../frontend
dockerfile: Dockerfile
target: dev
image: yoresee_doc_frontend_dev:latest
container_name: yoresee_doc_frontend
volumes:
- ../frontend:/app
- /app/node_modules
environment:
- NODE_ENV=development
- VITE_API_BASE_URL=${VITE_API_BASE_URL:-http://localhost:8080}
- VITE_GRPC_WEB_ENDPOINT=${VITE_GRPC_WEB_ENDPOINT:-/grpc}
networks:
- yoresee_doc_network
restart: unless-stopped
postgres:
image: postgres:15-alpine
container_name: yoresee_doc_postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-root}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-your_password}
POSTGRES_DB: ${POSTGRES_DB:-yoresee_doc_db}
ports:
- "${POSTGRES_HOST_PORT:-5432}:${POSTGRES_PORT:-5432}"
volumes:
- yoresee_doc_postgres_data:/var/lib/postgresql/data
networks:
- yoresee_doc_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-root} -d ${POSTGRES_DB:-yoresee_doc_db}"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: yoresee_doc_redis
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:-your_redis_password}
ports:
- "${REDIS_HOST_PORT:-6379}:${REDIS_PORT:-6379}"
volumes:
- yoresee_doc_redis_data:/data
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- yoresee_doc_network
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
consul:
image: hashicorp/consul:1.16
container_name: yoresee_doc_consul
command: "agent -dev -client=0.0.0.0 -ui"
environment:
CONSUL_LOCAL_CONFIG: >-
{"acl":{"enabled":true,"default_policy":"deny","down_policy":"extend-cache","enable_token_persistence":true,"tokens":{"initial_management":"${CONSUL_ROOT_TOKEN:-yoresee_doc_root_token}"}}}
ports:
- "${CONSUL_HOST_PORT:-8500}:${CONSUL_PORT:-8500}"
volumes:
- yoresee_doc_consul_data:/consul/data
networks:
- yoresee_doc_network
restart: unless-stopped
rabbitmq:
image: rabbitmq:3-management
container_name: yoresee_doc_rabbitmq
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-guest}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-guest}
ports:
- "${RABBITMQ_AMQP_HOST_PORT:-5672}:${RABBITMQ_AMQP_PORT:-5672}"
volumes:
- yoresee_doc_rabbitmq_data:/var/lib/rabbitmq
- ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./logs/rabbitmq:/var/log/rabbitmq
networks:
- yoresee_doc_network
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 5s
timeout: 3s
retries: 5
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: yoresee_doc_minio
command: server /data --console-address ":${MINIO_CONSOLE_PORT:-9001}"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
MINIO_BROWSER_REDIRECT_URL: ${MINIO_BROWSER_REDIRECT_URL:-http://localhost:8080/minio}
volumes:
- yoresee_doc_minio_data:/data
networks:
- yoresee_doc_network
restart: unless-stopped
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.15.3
container_name: yoresee_doc_elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- xpack.security.enrollment.enabled=false
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ports:
- "${ELASTICSEARCH_HOST_PORT:-9200}:${ELASTICSEARCH_PORT:-9200}"
volumes:
- yoresee_doc_elasticsearch_data:/usr/share/elasticsearch/data
networks:
- yoresee_doc_network
restart: unless-stopped
backend:
build:
context: ../backend
dockerfile: Dockerfile
target: dev
image: yoresee_doc_backend_dev:latest
container_name: yoresee_doc_backend
volumes:
- ../backend:/app
ports:
- "${BACKEND_DEBUG_HOST_PORT:-2345}:2345"
- "${BACKEND_GRPC_HOST_PORT:-9090}:${BACKEND_GRPC_PORT:-9090}"
environment:
- BACKEND_INTERNAL_RPC_KEY=${BACKEND_INTERNAL_RPC_KEY:-yoresee_doc_internal_key}
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
rabbitmq:
condition: service_healthy
minio:
condition: service_started
elasticsearch:
condition: service_started
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://${BACKEND_HOST:-backend}:${BACKEND_GRPC_PORT:-9090}/health"]
interval: 5s
timeout: 3s
retries: 20
start_period: 30s
networks:
- yoresee_doc_network
restart: unless-stopped
collab-core:
build:
context: ..
dockerfile: collab/Dockerfile
image: yoresee_doc_collab_core:latest
container_name: yoresee_doc_collab_core
environment:
- REDIS_HOST=${REDIS_HOST:-redis}
- REDIS_PORT=${REDIS_PORT:-6379}
- REDIS_PASSWORD=${REDIS_PASSWORD:-your_redis_password}
- REDIS_DB=${REDIS_DB:-0}
- BACKEND_ADDR=${BACKEND_HOST:-backend}:${BACKEND_GRPC_PORT:-9090}
- DIRTY_DOC_MQ=${DIRTY_DOC_MQ:-rabbitmq}
- DIRTY_DOC_TOPIC=${DIRTY_DOC_TOPIC:-collab.dirty_docs}
- RABBITMQ_URL=amqp://${RABBITMQ_DEFAULT_USER:-guest}:${RABBITMQ_DEFAULT_PASS:-guest}@${RABBITMQ_HOST:-rabbitmq}:${RABBITMQ_AMQP_PORT:-5672}/
- INTERNAL_RPC_KEY=${BACKEND_INTERNAL_RPC_KEY:-yoresee_doc_internal_key}
- DIRTY_DOC_NOTIFY_THRESHOLD=${DIRTY_DOC_NOTIFY_THRESHOLD:-5}
depends_on:
redis:
condition: service_healthy
backend:
condition: service_healthy
rabbitmq:
condition: service_healthy
networks:
- yoresee_doc_network
volumes:
- ../collab:/app
restart: unless-stopped
collab:
build:
context: ../collab-go
dockerfile: Dockerfile
image: yoresee_doc_collab_gateway:latest
container_name: yoresee_doc_collab
environment:
- ADDR=:${COLLAB_GATEWAY_PORT:-1234}
- JWT_SECRET=${JWT_SECRET:-yoresee_doc_jwt_secret_key}
- COLLAB_CORE_URL=ws://${COLLAB_CORE_HOST:-collab-core}:${COLLAB_CORE_PORT:-1234}
- BACKEND_GRPC_ADDR=${BACKEND_HOST:-backend}:${BACKEND_GRPC_PORT:-9090}
- INTERNAL_RPC_KEY=${BACKEND_INTERNAL_RPC_KEY:-yoresee_doc_internal_key}
volumes:
- ../collab-go:/app
depends_on:
- collab-core
networks:
- yoresee_doc_network
restart: unless-stopped
snapshot-worker:
build:
context: ../backend
dockerfile: Dockerfile
target: dev
image: yoresee_doc_snapshot_worker_dev:latest
container_name: yoresee_doc_snapshot_worker
volumes:
- ../backend:/app
environment:
- COLLAB_CORE_HTTP=http://${COLLAB_CORE_HOST:-collab-core}:${COLLAB_CORE_PORT:-1234}
command: sh -c "go mod download && go run ./cmd/snapshot-worker"
depends_on:
rabbitmq:
condition: service_healthy
redis:
condition: service_healthy
elasticsearch:
condition: service_started
networks:
- yoresee_doc_network
restart: unless-stopped
notification-worker:
build:
context: ../backend
dockerfile: Dockerfile
target: dev
image: yoresee_doc_notification_worker_dev:latest
container_name: yoresee_doc_notification_worker
volumes:
- ../backend:/app
environment:
- NOTIFICATION_MQ=${NOTIFICATION_MQ:-rabbitmq}
command: sh -c "go mod download && go run ./cmd/notification-worker"
depends_on:
rabbitmq:
condition: service_healthy
redis:
condition: service_healthy
postgres:
condition: service_healthy
networks:
- yoresee_doc_network
restart: unless-stopped
search-sync-worker:
build:
context: ../backend
dockerfile: Dockerfile
target: dev
image: yoresee_doc_search_sync_worker_dev:latest
container_name: yoresee_doc_search_sync_worker
volumes:
- ../backend:/app
environment:
- SEARCH_SYNC_MQ=${SEARCH_SYNC_MQ:-rabbitmq}
command: sh -c "go mod download && go run ./cmd/search-sync-worker"
depends_on:
rabbitmq:
condition: service_healthy
redis:
condition: service_healthy
postgres:
condition: service_healthy
elasticsearch:
condition: service_started
networks:
- yoresee_doc_network
restart: unless-stopped
volumes:
yoresee_doc_postgres_data:
yoresee_doc_redis_data:
yoresee_doc_consul_data:
yoresee_doc_rabbitmq_data:
yoresee_doc_minio_data:
yoresee_doc_elasticsearch_data:
networks:
yoresee_doc_network:
driver: bridge