使用Docker Compose部署Profile Views Counter项目指南
2025-07-08 07:11:54作者:裘晴惠Vivianne
Profile Views Counter是一个用于统计和展示个人资料访问量的工具。本文将详细介绍如何使用Docker Compose来部署这个项目,帮助开发者快速搭建完整的运行环境。
项目架构概述
该项目的Docker Compose配置定义了一个包含三个主要服务的微服务架构:
- 应用服务(APP):基于自定义PHP镜像构建的核心业务逻辑处理服务
- 数据库服务(PostgreSQL):用于持久化存储访问数据
- Web服务器(Nginx):作为反向代理处理HTTP请求
详细配置解析
1. 应用服务配置
app:
container_name: ${PROJECT_NAME}-app
image: ghpvc-app
build:
context: ./
dockerfile: ./.docker/php/Dockerfile
restart: unless-stopped
depends_on:
- postgres
working_dir: /app
volumes:
- ./:/app
- ./.docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
关键点说明:
- 使用自定义构建的PHP镜像,构建上下文为项目根目录
- 通过
depends_on
确保数据库服务先启动 - 采用卷挂载实现代码热更新,开发时修改代码无需重建容器
- 挂载自定义的PHP-FPM配置文件,优化进程管理
2. Nginx服务配置
nginx:
container_name: ${PROJECT_NAME}-nginx
image: nginx:1.21-alpine
ports:
- "80:80"
volumes:
- ./.docker/nginx/app.ghpvc.80.conf:/etc/nginx/conf.d/app.ghpvc.80.conf:ro
- ./public:/app/public:ro
关键特性:
- 使用轻量级的Alpine版Nginx镜像
- 暴露80端口提供Web访问
- 挂载自定义Nginx配置文件和静态资源目录
- 配置为只读(ro)挂载,增强安全性
3. PostgreSQL数据库配置
postgres:
container_name: ${PROJECT_NAME}-postgres
image: postgres:13.4-alpine
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
volumes:
- ./.docker-volume-postgres:/var/lib/postgresql/data
数据库特点:
- 同样采用Alpine版镜像减小体积
- 通过环境变量配置数据库用户、密码和名称
- 使用本地卷持久化存储数据,避免容器重启数据丢失
网络配置
networks:
ghpvc:
driver: bridge
项目创建了一个名为ghpvc的桥接网络,所有服务都加入该网络,实现服务间通信隔离。
部署实践建议
-
环境变量准备:创建
.env
文件定义以下变量:PROJECT_NAME=profile_views_counter DB_USER=your_db_user DB_PASSWORD=your_secure_password DB_NAME=profile_views DB_PORT=5432
-
启动命令:
docker-compose up -d
-
开发模式优化:
- 可添加
xdebug
配置到PHP服务以支持调试 - 考虑添加
phpmyadmin
服务方便数据库管理
- 可添加
-
生产环境调整:
- 替换自签名证书为正式SSL证书
- 配置Nginx的访问日志和错误日志
- 设置适当的资源限制(CPU/内存)
常见问题解决
- 端口冲突:如果80或5432端口被占用,修改
.env
中的端口配置 - 权限问题:确保Docker有权限访问项目目录
- 构建失败:检查Dockerfile是否存在且路径正确
通过这套Docker Compose配置,开发者可以快速搭建Profile Views Counter的完整运行环境,无论是用于开发测试还是生产部署都非常方便。