1. Beikeshop 安装概述
Beikeshop 是一款基于 PHP 开发的电商系统,采用 Docker 容器化部署可以大幅简化安装过程。Docker 通过容器技术将应用及其依赖打包成标准化的单元,实现"一次构建,随处运行"的效果。对于 Beikeshop 这样的 Web 应用,Docker 部署具有以下优势:
- 环境隔离:避免与宿主机环境冲突
- 快速部署:镜像包含所有依赖,无需手动安装
- 版本控制:可以精确管理应用版本
- 资源高效:相比虚拟机更轻量级
2. 安装前准备
2.1 系统要求
在安装 Beikeshop 之前,需要确保系统满足以下最低要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10/11, macOS 10.15+, Ubuntu 18.04+ | Ubuntu 20.04 LTS |
| CPU | 支持虚拟化的64位处理器 | 4核及以上 |
| 内存 | 4GB | 8GB及以上 |
| 存储 | 20GB可用空间 | SSD存储 |
| Docker | 20.10.0+ | 最新稳定版 |
2.2 启用虚拟化
大多数现代CPU都支持硬件虚拟化,但可能需要手动启用:
Windows系统:
- 重启进入BIOS/UEFI设置
- 找到"Virtualization Technology"或类似选项
- 启用后保存退出
验证是否启用:
- 任务管理器 → 性能选项卡
- 查看"虚拟化"是否显示"已启用"
提示:如果遇到"Docker Desktop failed to start because virtualization support wasn't detected"错误,通常就是虚拟化未启用导致的。
2.3 安装Docker引擎
Windows/macOS安装
下载Docker Desktop安装包:
- 官网:https://www.docker.com/products/docker-desktop
- 选择与系统匹配的版本
运行安装程序:
- Windows:勾选"Use WSL 2 instead of Hyper-V"(推荐)
- macOS:直接拖拽到Applications文件夹
完成安装后启动Docker Desktop
- 首次启动需要权限确认
- 等待Docker引擎初始化完成
Linux安装(以Ubuntu为例)
# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 验证安装 sudo docker run hello-world2.4 配置Docker镜像加速
国内用户建议配置镜像加速以提升下载速度:
创建或修改配置文件:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] } EOF重启Docker服务:
sudo systemctl daemon-reload sudo systemctl restart docker
3. Beikeshop容器化部署
3.1 获取Beikeshop镜像
Beikeshop官方可能提供预构建的Docker镜像,可以通过以下方式获取:
docker pull beikeshop/beikeshop:latest如果没有官方镜像,我们需要自行构建:
准备Dockerfile:
FROM php:8.1-apache # 安装系统依赖 RUN apt-get update && apt-get install -y \ libzip-dev \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ libssl-dev \ zip \ unzip \ git # 配置PHP扩展 RUN docker-php-ext-configure gd --with-freetype --with-jpeg RUN docker-php-ext-install -j$(nproc) gd pdo pdo_mysql zip # 安装Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # 设置工作目录 WORKDIR /var/www/html # 复制项目文件 COPY . . # 安装PHP依赖 RUN composer install --no-dev # 设置权限 RUN chown -R www-data:www-data /var/www/html # 暴露端口 EXPOSE 80构建镜像:
docker build -t beikeshop .
3.2 使用Docker Compose部署
更推荐使用docker-compose.yml文件定义多容器应用:
version: '3.8' services: app: image: beikeshop/beikeshop:latest # 或使用本地构建的镜像 # build: . ports: - "8080:80" volumes: - ./uploads:/var/www/html/uploads - ./config:/var/www/html/config environment: - DB_HOST=db - DB_NAME=beikeshop - DB_USER=beike - DB_PASSWORD=beike123 depends_on: - db restart: unless-stopped db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root123 - MYSQL_DATABASE=beikeshop - MYSQL_USER=beike - MYSQL_PASSWORD=beike123 volumes: - db_data:/var/lib/mysql restart: unless-stopped volumes: db_data:启动服务:
docker-compose up -d3.3 初始化Beikeshop
访问安装页面:
- 浏览器打开 http://localhost:8080/install
- 如果端口冲突,请修改docker-compose.yml中的端口映射
完成安装向导:
- 填写数据库连接信息(与docker-compose.yml中一致)
- 设置管理员账号
- 完成基础配置
安装完成后:
- 建议删除install目录
- 修改默认管理员密码
4. 常见问题排查
4.1 Docker启动失败
问题现象: "Docker Desktop failed to start because virtualization support wasn't detected"
解决方案:
- 确认BIOS中已启用虚拟化
- Windows用户:
- 启用Hyper-V和容器功能
- 或改用WSL2后端
- 检查是否与其他虚拟化软件冲突(如VMware)
4.2 端口冲突
问题现象: "Bind for 0.0.0.0:8080 failed: port is already allocated"
解决方案:
- 查找占用端口的进程:
# Linux/macOS sudo lsof -i :8080 # Windows netstat -ano | findstr 8080 - 停止占用进程或修改docker-compose.yml中的端口映射
4.3 数据库连接问题
问题现象: "SQLSTATE[HY000] [2002] Connection refused"
解决方案:
- 确认数据库容器已启动:
docker ps - 检查环境变量是否正确:
docker exec -it beikeshop_app env | grep DB_ - 测试数据库连接:
docker exec -it beikeshop_db mysql -ubeike -pbeike123 beikeshop
4.4 文件权限问题
问题现象: "Failed to open stream: Permission denied"
解决方案:
- 确保挂载的卷有正确权限:
chmod -R 755 ./uploads chown -R www-data:www-data ./uploads - 或在docker-compose.yml中添加user参数:
app: user: "www-data"
5. 生产环境优化建议
5.1 安全加固
修改默认端口:
ports: - "9000:80"启用HTTPS:
- 使用Nginx反向代理
- 或直接在容器中配置SSL
定期备份:
# 备份数据库 docker exec beikeshop_db mysqldump -ubeike -pbeike123 beikeshop > backup.sql # 备份上传文件 tar czvf uploads_backup.tar.gz ./uploads
5.2 性能优化
启用OPcache:
RUN docker-php-ext-install opcache COPY opcache.ini /usr/local/etc/php/conf.d/配置PHP-FPM:
FROM php:8.1-fpm使用Redis缓存:
services: redis: image: redis:alpine app: environment: - REDIS_HOST=redis
5.3 监控与日志
查看容器日志:
docker logs -f beikeshop_app使用cAdvisor监控:
docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --volume=/dev/disk/:/dev/disk:ro \ --publish=8081:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest配置日志轮转:
app: logging: driver: "json-file" options: max-size: "10m" max-file: "3"
6. 日常维护操作
6.1 容器管理
启动/停止服务:
docker-compose start docker-compose stop进入容器shell:
docker exec -it beikeshop_app bash更新容器:
docker-compose pull docker-compose up -d
6.2 数据管理
备份数据库:
docker exec beikeshop_db sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > all-databases.sql恢复数据库:
cat backup.sql | docker exec -i beikeshop_db mysql -uroot -p"$MYSQL_ROOT_PASSWORD"迁移数据卷:
# 创建备份 docker run --rm --volumes-from beikeshop_db -v $(pwd):/backup busybox tar cvf /backup/db_backup.tar /var/lib/mysql # 恢复备份 docker run --rm --volumes-from new_db -v $(pwd):/backup busybox tar xvf /backup/db_backup.tar
6.3 版本升级
拉取新版本镜像:
docker-compose pull重新创建容器:
docker-compose up -d执行升级脚本:
docker exec beikeshop_app php upgrade.php
注意:升级前务必备份数据和配置文件,避免升级失败导致数据丢失。