diff --git a/apps/miniprogram/project.config.json b/apps/miniprogram/project.config.json index f915573..d636e37 100644 --- a/apps/miniprogram/project.config.json +++ b/apps/miniprogram/project.config.json @@ -1,5 +1,5 @@ { - "appid": "wxbdf7fb77d5a6076a", + "appid": "wx6cfca7c83002d678", "compileType": "miniprogram", "libVersion": "trial", "miniprogramRoot": "miniprogram/", diff --git a/infra/deploy/compose.local.yaml b/infra/deploy/compose.local.yaml new file mode 100644 index 0000000..f2c3880 --- /dev/null +++ b/infra/deploy/compose.local.yaml @@ -0,0 +1,120 @@ +name: lehuo-local + +services: + mysql: + image: mysql:8.4.8 + restart: unless-stopped + environment: + MYSQL_DATABASE: lehuo + MYSQL_PASSWORD: change-me-local-only + MYSQL_ROOT_PASSWORD: root-lehuo-2026 + MYSQL_USER: lehuo + TZ: Asia/Shanghai + ports: + - '3306:3306' + volumes: + - mysql-data:/var/lib/mysql + healthcheck: + test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root -proot-lehuo-2026 --silent'] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + networks: + - backend + + redis: + image: redis:7.4-alpine + restart: unless-stopped + command: ['redis-server', '--appendonly', 'yes'] + ports: + - '6379:6379' + volumes: + - redis-data:/data + healthcheck: + test: ['CMD', 'redis-cli', 'ping'] + interval: 10s + timeout: 5s + retries: 5 + networks: + - backend + + api: + build: + context: ../.. + dockerfile: apps/api/Dockerfile + restart: unless-stopped + environment: + APP_ENV: demo + API_PORT: '3000' + DATABASE_URL: mysql://lehuo:change-me-local-only@mysql:3306/lehuo?allowPublicKeyRetrieval=true&useSSL=false + REDIS_URL: redis://redis:6379 + SESSION_SECRET: lehuo-local-session-secret-2026 + SESSION_TOKEN_PEPPER: lehuo-local-token-pepper-2026 + AUDIT_IP_HASH_KEY: lehuo-local-audit-key-2026 + FIELD_ENCRYPTION_KEY: eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg= + OBJECT_STORAGE_ENDPOINT: http://seaweedfs:8333/seaweedfs/s3 + OBJECT_STORAGE_REGION: auto + OBJECT_STORAGE_BUCKET: lehuo + OBJECT_STORAGE_ACCESS_KEY: local-dev-key + OBJECT_STORAGE_SECRET_KEY: local-dev-secret + OBJECT_STORAGE_FORCE_PATH_STYLE: 'true' + ADMIN_WEB_ORIGIN: https://lhgy.net + ADMIN_COOKIE_SECURE: 'true' + AUTH_SESSION_TTL_SECONDS: '86400' + WECHAT_APP_ID: wx6cfca7c83002d678 + WECHAT_APP_SECRET: fd6dda161fae9aded7fe45886c3f4527 + WECHAT_PRIVATE_KEY_PATH: /app/ssl/private.key + NOTIFICATION_WORKER_ENABLED: 'false' + BOOTSTRAP_ADMIN_USERNAME: admin + BOOTSTRAP_ADMIN_PASSWORD: lehuo@123456 + BOOTSTRAP_ADMIN_DISPLAY_NAME: System Administrator + ports: + - '3000:3000' + depends_on: + mysql: + condition: service_healthy + redis: + condition: service_healthy + networks: + - backend + read_only: true + tmpfs: + - /tmp:size=64m,noexec,nosuid + security_opt: + - no-new-privileges:true + + admin-web: + build: + context: ../.. + dockerfile: apps/admin-web/Dockerfile + args: + VITE_API_BASE_URL: https://lhgy.net/api + restart: unless-stopped + ports: + - '5173:80' + environment: + PUBLIC_HOST: lhgy.net + PUBLIC_WS: wss://lhgy.net + depends_on: + - api + networks: + - backend + - edge + volumes: + - ./nginx.local.conf.template:/etc/nginx/templates/default.conf.template + tmpfs: + - /tmp:size=64m,noexec,nosuid + - /var/cache/nginx:size=32m,noexec,nosuid + - /var/run:size=4m,noexec,nosuid + - /var/log/nginx:size=32m,noexec,nosuid + security_opt: + - no-new-privileges:true + +volumes: + mysql-data: + redis-data: + +networks: + backend: + edge: