# # 说明 # 该文件是 uzon-mail 的 docker-compose 配置文件,使用时,在当前目录执行 docker-compose up -d 命令即可启动程序 # services: # PostgreSQL 服务 uzon-postgres: container_name: ${POSTGRES_CONTAINER_NAME} image: ${POSTGRES_IMAGE} # 通过 .env 中的 COMPOSE_PROFILES 控制是否启动内置 PostgreSQL profiles: - postgresql # [可选]对外暴露端口,方便外部管理 # 本地端口:容器端口 # 若本机 5432 已使用,可更换成其它端口,例如 25432:5432 # ports: # - ${POSTGRES_HOST_PORT}:5432 environment: POSTGRES_DB: ${Database__PostgreSql__Database} # 数据库名 POSTGRES_USER: ${Database__PostgreSql__User} # 数据库用户名 POSTGRES_PASSWORD: ${Database__PostgreSql__Password} # 数据库密码 volumes: - ${POSTGRES_DATA_DIR}:/var/lib/postgresql # 数据库数据挂载,防止容器重构后数据丢失 restart: always healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${Database__PostgreSql__User} -d ${Database__PostgreSql__Database}" ] interval: 10s timeout: 5s retries: 5 start_period: 10s # 连接到 uzonmail 主程序网络 networks: - uzon_postgres_network # redis 缓存 uzon-redis: container_name: ${REDIS_CONTAINER_NAME} image: ${REDIS_IMAGE} # 通过 .env 中的 COMPOSE_PROFILES 控制是否启动内置 Redis profiles: - redis # [可选]对外暴露端口,方便外部管理 # 本地端口:容器端口 # 若本机 6379 已使用,可更换成其它端口,例如 26379:6379 # ports: # - ${REDIS_HOST_PORT}:6379 volumes: - ${REDIS_DATA_DIR}:/data # 数据库数据挂载,防止容器重构后数据丢失 restart: always healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 start_period: 5s networks: - uzon_redis_network # 程序主体 uzon-mail: container_name: ${UZON_MAIL_CONTAINER_NAME} image: ${UZON_MAIL_IMAGE} env_file: - .env # 注入 ASP.NET Core 层级配置 ports: - ${UZON_MAIL_HOST_PORT}:${Http__Port} volumes: - ${UZON_MAIL_DATA_DIR}:/app/data # 数据存储 # - ./data/app.config.json:/app/wwwroot/app.config.json # 前端配置, 可选 networks: - uzonmail_network - uzon_postgres_network - uzon_redis_network command: [ "dotnet", "UZonMailService.dll" ] depends_on: uzon-postgres: condition: service_healthy # 允许用户关闭内置 PostgreSQL 后连接外部数据库 required: false uzon-redis: condition: service_healthy # 允许用户关闭内置 Redis 后使用内存缓存或外部 Redis required: false networks: uzon_postgres_network: uzon_redis_network: uzonmail_network: