Trae快速构建自己项目的docker镜像

Trae快速构建自己项目的docker镜像 Trae 设置添加项目规则我这个是用的腾讯云个人免费镜像镜像地址改成自己的账号密码也改成自己的就可以直接使用就可以全自动维护自己的镜像了---alwaysApply: false description: 陀螺匠项目Docker镜像构建规范与最佳实践包含Dockerfile编写、分层优化、多架构构建、腾讯云镜像仓库管理---Docker镜像构建规范CRMEB项目项目概述项目名称: CRMEB 商城系统技术栈: ThinkPHP 6.x Workerman PHP 7.4 MySQL 5.7 Redis Nginx Docker镜像仓库: 腾讯云容器镜像服务 (ccr.ccs.tencentyun.com)构建要求: 必须构建多架构镜像linux/amd64 linux/arm64镜像仓库地址服务镜像地址PHPccr.ccs.tencentyun.com/crmebky_php/phpMySQLccr.ccs.tencentyun.com/crmebky_php/mysqlRedisccr.ccs.tencentyun.com/crmebky_php/redisNginxccr.ccs.tencentyun.com/crmebky_php/nginx完整应用ccr.ccs.tencentyun.com/crmebky_php/crmebky环境准备# 登录腾讯云容器镜像服务dockerlogin ccr.ccs.tencentyun.com# 使用现有的多架构构建器dockerbuildx use multiarch多架构镜像构建与推送生产环境注意以下操作仅用于生产环境推送镜像到仓库本地开发调试请使用上面的【本地开发调试】章节。必须构建多架构镜像支持 linux/amd64 和 linux/arm64 平台。构建并推送各服务镜像# 生成时间标签强制要求exportIMAGE_TAG$(date%Y%m%d-%H%M%S)# PHP 镜像dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/php:latest\-tccr.ccs.tencentyun.com/crmebky_php/php:$IMAGE_TAG\./docker-compose-dev/php--push# MySQL 镜像dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/mysql:latest\-tccr.ccs.tencentyun.com/crmebky_php/mysql:$IMAGE_TAG\./docker-compose-dev/mysql--push# Redis 镜像dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/redis:latest\-tccr.ccs.tencentyun.com/crmebky_php/redis:$IMAGE_TAG\./docker-compose-dev/redis--push# Nginx 镜像dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/nginx:latest\-tccr.ccs.tencentyun.com/crmebky_php/nginx:$IMAGE_TAG\./docker-compose-dev/nginx--push构建完整应用镜像# 进入项目根目录cd.# 或者从.version文件中读取exportIMAGE_TAG$(cat.version2/dev/null||date%Y%m%d-%H%M%S)dockerbuildx build--platformlinux/amd64,linux/arm64\-fdocker-compose-dev/allinone/Dockerfile\-tccr.ccs.tencentyun.com/crmebky_php/crmebky:latest\-tccr.ccs.tencentyun.com/crmebky_php/crmebky:$IMAGE_TAG\--push./docker-compose-dev/allinone一键构建脚本#!/bin/bashIMAGE_TAG$(date%Y%m%d-%H%M%S)echo镜像标签:$IMAGE_TAGexportDOCKER_BUILDKIT1dockerbuildx use multiarch# PHP 镜像echo构建 PHP 镜像...dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/php:latest\-tccr.ccs.tencentyun.com/crmebky_php/php:$IMAGE_TAG\--push./docker-compose-dev/php# MySQL 镜像echo构建 MySQL 镜像...dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/mysql:latest\-tccr.ccs.tencentyun.com/crmebky_php/mysql:$IMAGE_TAG\--push./docker-compose-dev/mysql# Redis 镜像echo构建 Redis 镜像...dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/redis:latest\-tccr.ccs.tencentyun.com/crmebky_php/redis:$IMAGE_TAG\--push./docker-compose-dev/redis# Nginx 镜像echo构建 Nginx 镜像...dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/nginx:latest\-tccr.ccs.tencentyun.com/crmebky_php/nginx:$IMAGE_TAG\--push./docker-compose-dev/nginx# 完整应用镜像echo构建完整应用镜像...exportIMAGE_TAG$(cat.version2/dev/null||date%Y%m%d-%H%M%S)dockerbuildx build--platformlinux/amd64,linux/arm64\-fdocker-compose-dev/allinone/Dockerfile\-tccr.ccs.tencentyun.com/crmebky_php/crmebky:latest\-tccr.ccs.tencentyun.com/crmebky_php/crmebky:$IMAGE_TAG\--push./docker-compose-dev/allinoneecho构建完成标签: latest,$IMAGE_TAG镜像标签规范标签类型格式说明latestlatest最新稳定版本时间标签YYYYMMDD-HHMMSS每次推送必须添加版本标签v2.0.1语义化版本环境标签dev/test开发/测试环境强制要求: 每次推送必须让用户确认地址和标签推送成功后提示用户要不要推送latest分支。镜像验证# 查看多架构信息dockerbuildx imagetools inspect ccr.ccs.tencentyun.com/crmebky_php/crmebky:latest# 查看 manifestdockermanifest inspect ccr.ccs.tencentyun.com/crmebky_php/crmebky:latest本地开发调试默认本地开发调试时使用普通 docker build 构建镜像不推送到仓库构建本地镜像# 进入 docker-compose-dev 目录cd./docker-compose-dev# 构建 PHP 镜像dockerbuild-tcrmeb-php:latest ./php# 构建 MySQL 镜像dockerbuild-tcrmeb-mysql:latest ./mysql# 构建 Redis 镜像dockerbuild-tcrmeb-redis:latest ./redis# 构建 Nginx 镜像dockerbuild-tcrmeb-nginx:latest ./nginx# 使用 docker-compose 启动本地镜像docker-compose-fdocker-compose.build.yml up-d# 查看日志docker-compose-fdocker-compose.build.yml logs-f# 测试访问curlhttp://localhost:8011# 进入 PHP 容器调试dockerexec-itcrmeb_phpbash# 停止并删除测试容器docker-compose-fdocker-compose.build.yml down镜像测试# 本地运行 PHP 镜像测试dockerrun-d-p9000:9000--nametest-php\crmeb-php:latest# 检查 PHP 版本和扩展dockerexectest-php php-vdockerexectest-php php-m# 清理测试容器dockerrm-ftest-php# 本地运行 MySQL 镜像测试dockerrun-d-p3306:3306--nametest-mysql\-eMYSQL_ROOT_PASSWORD123456\crmeb-mysql:latest# 检查 MySQL 版本dockerexectest-mysql mysql-V# 清理测试容器dockerrm-ftest-mysql# 本地运行 Redis 镜像测试dockerrun-d-p6379:6379--nametest-redis\crmeb-redis:latest# 检查 Redis 版本dockerexectest-redis redis-server-v# 清理测试容器dockerrm-ftest-redis# 本地运行 Nginx 镜像测试dockerrun-d-p80:80--nametest-nginx\crmeb-nginx:latest# 检查 Nginx 版本dockerexectest-nginx nginx-v# 清理测试容器dockerrm-ftest-nginxDockerfile 分层优化# 1. 基础层 FROM php:7.4-fpm # 2. 系统依赖层 RUN apt-get update apt-get install -y \ libpng-dev libjpeg-dev libfreetype6-dev \ libcurl4-openssl-dev libbcmath-dev libmbstring-dev \ libzip-dev unzip git \ docker-php-ext-configure gd \ docker-php-ext-install gd curl bcmath mbstring zip pdo pdo_mysql # 3. PHP 扩展层 RUN pecl install redis \ docker-php-ext-enable redis # 4. 应用层 COPY . /var/www RUN composer install --no-dev --optimize-autoloader # 5. 配置层 COPY php.ini /usr/local/etc/php/故障排查常见问题# 查看构建历史dockerhistoryccr.ccs.tencentyun.com/crmebky_php/crmebky:latest# 进入容器调试dockerexec-it容器名bash# 查看资源使用dockerstats容器名# 查看日志dockerlogs-f容器名# 查看构建过程中的详细日志dockerbuildx build--platformlinux/amd64,linux/arm64\-tccr.ccs.tencentyun.com/crmebky_php/crmebky:latest\--push./docker-compose-dev/allinone--progressplain构建失败检查清单Docker 版本 ≥ 20.10.0已登录腾讯云镜像仓库Buildx 构建器已创建并启用使用docker buildx use multiarch包含--platform linux/amd64,linux/arm64参数包含--push参数推送镜像基础镜像支持多架构网络连接正常能够访问镜像仓库和基础镜像源安全最佳实践非 root 用户运行RUN groupadd -g 1000 www useradd -u 1000 -g www www USER www敏感信息管理使用环境变量注入敏感信息避免密码硬编码使用专用镜像仓库账号不在 Dockerfile 中包含敏感信息最小化攻击面只暴露必要端口使用官方基础镜像定期更新基础镜像移除不需要的软件和服务性能优化将不常变化的操作放在 Dockerfile 前面利用 Docker 缓存分离依赖安装和代码复制启用 OPcache 提高 PHP 性能配置适当的 PHP-FPM 进程数使用 Redis 缓存减轻数据库压力优化 Nginx 配置启用 gzip 压缩使用多阶段构建减小镜像体积最后更新时间: 2026-03-25适用版本: CRMEB 商城系统 v2.0