首页
/ Blinko项目生产环境Docker Compose部署指南

Blinko项目生产环境Docker Compose部署指南

2025-07-08 07:10:09作者:咎岭娴Homer

项目概述

Blinko是一个基于Next.js构建的Web应用项目,采用现代Web技术栈开发。本文主要讲解如何使用Docker Compose在生产环境中部署Blinko项目及其依赖的PostgreSQL数据库。

核心组件

Blinko生产环境部署包含两个主要服务:

  1. Blinko网站服务:基于Next.js框架构建的前端应用
  2. PostgreSQL数据库服务:用于存储应用数据的数据库系统

网络配置

networks:
  blinko-network:
    driver: bridge

项目使用自定义的桥接网络blinko-network,这种配置有以下优势:

  • 容器间可以通过服务名直接通信
  • 提供隔离的网络环境
  • 便于未来扩展其他服务

Blinko网站服务配置详解

blinko-website:
  image: blinkospace/blinko:latest
  container_name: blinko-website
  environment:
    NODE_ENV: production
    NEXTAUTH_SECRET: my_ultra_secure_nextauth_secret
    DATABASE_URL: postgresql://postgres:mysecretpassword@postgres:5432/postgres

关键配置说明

  1. 环境变量

    • NODE_ENV=production:设置为生产环境
    • NEXTAUTH_SECRET:NextAuth.js的加密密钥,生产环境必须设置且应保持机密
    • DATABASE_URL:数据库连接字符串,指向PostgreSQL服务
  2. 健康检查

    healthcheck:
      test: ["CMD", "curl", "-f", "http://blinko-website:1111/"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 30s
    
    • 每30秒检查一次服务健康状态
    • 超时设置为10秒
    • 最多重试5次
    • 容器启动后30秒开始检查
  3. 日志管理

    logging:
      options:
        max-size: "10m"
        max-file: "3"
    
    • 限制单个日志文件最大10MB
    • 保留最多3个日志文件,避免磁盘空间被占满

PostgreSQL数据库服务配置

postgres:
  image: postgres:14
  container_name: blinko-postgres
  environment:
    POSTGRES_DB: postgres
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: mysecretpassword
    TZ: Asia/Shanghai

关键配置说明

  1. 数据库凭证

    • 默认数据库:postgres
    • 用户名:postgres
    • 密码:mysecretpassword(生产环境应使用更复杂的密码)
  2. 时区设置

    • TZ: Asia/Shanghai:将数据库时区设置为上海时区
  3. 健康检查

    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres", "-d", "postgres"]
    
    • 使用PostgreSQL自带的pg_isready工具检查数据库是否就绪
    • 每5秒检查一次

部署注意事项

  1. 数据持久化: 配置文件中注释掉的volumes部分可用于数据持久化:

    # volumes:
    #   - ~/your-name/.blinko:/app/.blinko
    #   - ~/your-name/.db:/var/lib/postgresql/data
    

    生产环境建议取消注释并配置合适的挂载路径,避免容器重启后数据丢失。

  2. 端口映射

    • Blinko网站服务映射主机1111端口到容器1111端口
    • PostgreSQL映射主机5435端口到容器5432端口(避免与主机可能已有的PostgreSQL冲突)
  3. 安全性建议

    • 所有密码和密钥都应替换为更复杂的值
    • 考虑使用环境变量文件或密钥管理服务来管理敏感信息
    • 生产环境应考虑添加TLS/SSL加密

部署步骤

  1. 确保已安装Docker和Docker Compose
  2. 将配置文件保存为docker-compose.prod.yml
  3. 运行命令:docker-compose -f docker-compose.prod.yml up -d
  4. 检查服务状态:docker-compose ps

故障排查

  1. 服务启动失败

    • 检查端口是否被占用
    • 查看日志:docker-compose logs
  2. 数据库连接问题

    • 确保PostgreSQL服务健康状态为healthy
    • 验证数据库连接字符串是否正确
  3. 性能问题

    • 根据服务器配置调整资源限制
    • 考虑添加更多实例并配置负载均衡

通过以上配置和说明,您应该能够顺利地在生产环境中部署Blinko项目。根据实际需求,您可能需要进一步调整资源配置和安全设置。