PrestaShop项目Docker Compose部署指南
2025-07-07 01:13:27作者:贡沫苏Truman
概述
PrestaShop是一款流行的开源电子商务解决方案,使用Docker Compose可以快速搭建开发或测试环境。本文将详细解析PrestaShop项目中的docker-compose.yml文件配置,帮助开发者理解其架构和部署原理。
核心服务架构
PrestaShop的Docker Compose配置主要包含三个核心服务:
- MySQL数据库服务:存储PrestaShop的所有数据
- PrestaShop主服务:运行电子商务平台本身
- MailDev邮件服务:用于开发和测试环境中的邮件测试
数据库服务配置详解
MySQL服务配置体现了生产级数据库部署的最佳实践:
mysql:
image: mysql:8
ports:
- "3306:3306"
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWD:-prestashop}
MYSQL_DATABASE: ${DB_NAME:-prestashop}
restart: unless-stopped
关键点分析:
- 使用MySQL 8官方镜像,确保数据库兼容性
- 数据持久化通过命名卷
db-data
实现,防止容器重启数据丢失 - 环境变量提供灵活的密码和数据库名配置,默认值为
prestashop
unless-stopped
重启策略确保服务异常退出时自动恢复
PrestaShop主服务配置
PrestaShop服务配置最为复杂,体现了对开发环境的全面支持:
prestashop-git:
build:
dockerfile: .docker/Dockerfile
context: .
args:
- VERSION=${VERSION:-8.1-apache}
- USER_ID=${USER_ID:-1000}
- GROUP_ID=${GROUP_ID:-1000}
构建配置特点:
- 使用自定义Dockerfile构建,而非直接使用镜像
- 支持多版本PHP(默认8.1-apache)
- 考虑Linux用户权限问题,可配置用户ID和组ID
环境变量配置
环境变量部分提供了丰富的自定义选项:
environment:
PS_INSTALL_AUTO: ${PS_INSTALL_AUTO:-1}
DB_SERVER: ${DB_SERVER:-mysql}
PS_DOMAIN: ${PS_DOMAIN:-localhost:8001}
PS_DEV_MODE: ${PS_DEV_MODE:-1}
主要配置项:
PS_INSTALL_AUTO
:控制是否自动安装(默认开启)PS_DEV_MODE
:开发模式开关(默认开启)- 数据库连接配置(默认指向mysql服务)
- 多语言支持(默认英语)
- 管理员账户配置
网络与依赖配置
ports:
- "8001:80"
- "8002:443"
depends_on:
- mysql
networks:
- prestashop-network
网络特性:
- 映射80和443端口到主机8001和8002
- 显式声明依赖MySQL服务
- 使用自定义网络确保服务间通信
邮件服务配置
MailDev服务为开发提供邮件测试功能:
maildev:
image: 'maildev/maildev'
ports:
- "1080:1080" # Web界面
- "1025:1025" # SMTP端口
功能特点:
- 提供Web界面查看发送的邮件(访问1080端口)
- 测试SMTP服务器接收邮件(1025端口)
- 与PrestaShop服务在同一网络,可直接通信
网络配置
networks:
prestashop-network:
name: prestashop-network
网络设计:
- 创建名为prestashop-network的自定义网络
- 所有服务加入同一网络,确保服务间可直接通过服务名通信
- 隔离主机网络,提高安全性
部署与使用建议
- 环境准备:确保主机已安装Docker和Docker Compose
- 配置文件:可根据需要修改
.env
文件覆盖默认配置 - 启动命令:执行
docker-compose up -d
启动所有服务 - 访问方式:
- PrestaShop前台:http://localhost:8001
- 后台管理:http://localhost:8001/admin-dev
- 邮件界面:http://localhost:1080
开发模式特色
此配置特别适合PrestaShop二次开发:
- 源代码通过卷映射直接挂载,修改即时生效
- 开发模式默认开启,显示详细错误信息
- XDebug支持可选安装,方便调试
- 使用wait-for-it脚本确保数据库就绪后再启动
总结
PrestaShop的Docker Compose配置提供了开箱即用的开发环境,通过合理的服务拆分、网络隔离和环境变量配置,既满足了开发需求,又保持了生产环境的相似性。理解这份配置有助于开发者快速搭建环境,也为自定义部署提供了良好基础。