更新日期: 2025年1月 主域名: oasisvape.co.nz 目标: 通过二级域名实现服务分流和灵活切换
在Cloudflare DNS管理界面添加以下A记录:
| 类型 | 名称 | 内容 | TTL | 代理状态 |
|---|---|---|---|---|
| A | erp | 156.67.214.225 | Auto | 已代理 |
| A | strapi | 156.67.214.225 | Auto | 已代理 |
| A | n8n | 156.67.214.225 | Auto | 已代理 |
| A | docs | 156.67.214.225 | Auto | 已代理 |
| A | grafana | 156.67.214.225 | Auto | 已代理 |
| A | prometheus | 156.67.214.225 | Auto | 已代理 |
如需更灵活的域名管理,可以使用CNAME记录:
| 类型 | 名称 | 内容 | TTL | 代理状态 |
|---|---|---|---|---|
| CNAME | erp | srv878756.hstgr.cloud | Auto | 已代理 |
| CNAME | strapi | srv878756.hstgr.cloud | Auto | 已代理 |
| CNAME | n8n | srv878756.hstgr.cloud | Auto | 已代理 |
| CNAME | docs | srv878756.hstgr.cloud | Auto | 已代理 |
# infra/shared-database/docker-compose.yml version: '3.8' services: shared-postgres: image: postgres:16.0-alpine container_name: shared-postgres restart: unless-stopped environment: POSTGRES_DB: shared_postgres_db POSTGRES_USER: postgres_admin POSTGRES_PASSWORD: ${POSTGRES_ROOT_PASSWORD} volumes: - shared_postgres_data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d networks: - traefik ports: - "5432:5432" volumes: shared_postgres_data: networks: traefik: external: true
# infra/erpnext/docker-compose.yml services: erpnext-frontend: image: frappe/erpnext:v15 container_name: erpnext-frontend restart: unless-stopped environment: - SITE_NAME=erp.oasisvape.co.nz volumes: - erpnext_sites:/home/frappe/frappe-bench/sites networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.erpnext.rule=Host(`erp.oasisvape.co.nz`)" - "traefik.http.routers.erpnext.entrypoints=websecure" - "traefik.http.routers.erpnext.tls.certresolver=mytlschallenge" - "traefik.http.services.erpnext.loadbalancer.server.port=80" - "traefik.docker.network=traefik"
# infra/strapi-ecommerce/docker-compose.yml services: strapi: image: strapi/strapi:latest container_name: dv-strapi-v5-ecommerce restart: unless-stopped environment: - DATABASE_CLIENT=postgres - DATABASE_HOST=shared-postgres - DATABASE_PORT=5432 - DATABASE_NAME=shared_postgres_db - DATABASE_USERNAME=strapi_user - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_SCHEMA=strapi_ecommerce - JWT_SECRET=${JWT_SECRET} - ADMIN_JWT_SECRET=${ADMIN_JWT_SECRET} - APP_KEYS=${APP_KEYS} - NODE_ENV=production volumes: - ./config:/opt/app/config - ./src:/opt/app/src - ./package.json:/opt/app/package.json - strapi_uploads:/opt/app/public/uploads networks: - traefik depends_on: - shared-postgres labels: - "traefik.enable=true" - "traefik.http.routers.strapi.rule=Host(`strapi.oasisvape.co.nz`)" - "traefik.http.routers.strapi.entrypoints=websecure" - "traefik.http.routers.strapi.tls.certresolver=mytlschallenge" - "traefik.http.services.strapi.loadbalancer.server.port=1337" - "traefik.docker.network=traefik" volumes: strapi_uploads: networks: traefik: external: true
# infra/n8n/docker-compose.yml services: n8n: image: docker.n8n.io/n8nio/n8n:latest container_name: n8n-automation restart: unless-stopped environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=shared-postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=shared_postgres_db - DB_POSTGRESDB_USER=n8n_user - DB_POSTGRESDB_PASSWORD=${N8N_DB_PASSWORD} - DB_POSTGRESDB_SCHEMA=n8n_workflows - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} - GENERIC_TIMEZONE=Pacific/Auckland - TZ=Pacific/Auckland volumes: - n8n_data:/home/node/.n8n networks: - traefik depends_on: - shared-postgres labels: - "traefik.enable=true" - "traefik.http.routers.n8n.rule=Host(`n8n.oasisvape.co.nz`)" - "traefik.http.routers.n8n.entrypoints=websecure" - "traefik.http.routers.n8n.tls.certresolver=mytlschallenge" - "traefik.http.services.n8n.loadbalancer.server.port=5678" - "traefik.docker.network=traefik" volumes: n8n_data: networks: traefik: external: true
# infra/dokuwiki/docker-compose.yml services: dokuwiki: image: bitnami/dokuwiki:latest container_name: dokuwiki restart: unless-stopped environment: - TZ=Pacific/Auckland volumes: - dokuwiki_data:/bitnami/dokuwiki networks: - traefik labels: - "traefik.enable=true" - "traefik.http.routers.dokuwiki.rule=Host(`docs.oasisvape.co.nz`)" - "traefik.http.routers.dokuwiki.entrypoints=websecure" - "traefik.http.routers.dokuwiki.tls.certresolver=mytlschallenge" - "traefik.http.services.dokuwiki.loadbalancer.server.port=8080" - "traefik.docker.network=traefik" volumes: dokuwiki_data: networks: traefik: external: true
如需更多配置示例和故障排查,请参考Wiki其他页面。