chore: 更新Dockerfile以支持构建参数和环境变量

- 添加构建参数GIT_COMMIT、GIT_BRANCH和BUILD_TIME
- 设置相应的环境变量以便于构建信息的追踪
- 优化依赖安装命令,使用npm install替代npm ci
- 移除开发阶段的Dockerfile配置,简化构建流程
This commit is contained in:
iHeyTang
2025-09-03 19:23:55 +08:00
parent f2f39fa8ba
commit 8d88aa618f
3 changed files with 234 additions and 14 deletions

194
BUILD.md Normal file
View File

@@ -0,0 +1,194 @@
# 构建和部署指南
本项目提供了多个构建脚本,可以自动识别 git commit hash 作为 Docker 镜像标签。
## 📁 脚本文件
- **`build.sh`** - 完整的构建脚本,支持多种选项
- **`docker-build.sh`** - 简化的快速构建脚本
- **`deploy.sh`** - 部署脚本,可选择是否重新构建
## 🚀 快速开始
### 1. 快速构建
```bash
# 最简单的构建方式
./docker-build.sh
```
### 2. 完整构建
```bash
# 生产环境构建
./build.sh
# 开发环境构建
./build.sh --env=development
# 构建并推送到仓库
./build.sh --push
```
### 3. 使用 npm scripts
```bash
# Docker 构建
npm run build:docker
# 开发环境构建
npm run build:docker:dev
# 构建并推送
npm run build:docker:push
# 生产环境构建并推送
npm run build:prod
```
## 🏷️ 标签策略
构建脚本会自动生成以下标签:
### 有 Git Tag 的情况
- 主标签:`bw-mini-app-server:v1.0.0` (使用 git tag)
- 额外标签:
- `bw-mini-app-server:e30d7cc` (commit hash)
- `bw-mini-app-server:latest`
### 无 Git Tag 的情况
- 主标签:`bw-mini-app-server:e30d7cc` (commit hash)
- 额外标签:
- `bw-mini-app-server:latest` (main/master 分支)
- `bw-mini-app-server:feature-latest` (其他分支)
## 📋 构建信息
每次构建后会生成 `deployment-info.json` 文件,包含:
```json
{
"image": "bw-mini-app-server:e30d7cc",
"git": {
"commit": "e30d7cc",
"branch": "main",
"tag": ""
},
"build": {
"time": "2024-01-15_14:30:25",
"environment": "production"
},
"tags": ["e30d7cc", "latest"]
}
```
## 🔧 脚本选项
### build.sh 选项
```bash
./build.sh [选项]
选项:
--push 构建后推送镜像到仓库
--env=ENV 指定环境 (production|development默认: production)
-h, --help 显示此帮助信息
```
### deploy.sh 选项
```bash
./deploy.sh [选项]
选项:
--env=ENV 指定环境 (production|development默认: production)
--build 重新构建镜像
-h, --help 显示此帮助信息
```
## 🐳 Docker Compose
### 开发环境
```bash
# 启动开发环境
npm run docker:up
# 或
docker-compose up -d
# 查看日志
npm run docker:logs
# 或
docker-compose logs -f
```
### 生产环境
```bash
# 启动生产环境
npm run docker:up:prod
# 或
docker-compose --profile production up -d
```
## 🛠️ 环境变量
在 Dockerfile 中设置了以下构建时环境变量:
- `GIT_COMMIT` - Git commit hash
- `GIT_BRANCH` - Git 分支名
- `BUILD_TIME` - 构建时间
这些变量可以在应用中访问:
```javascript
console.log('Git Commit:', process.env.GIT_COMMIT);
console.log('Git Branch:', process.env.GIT_BRANCH);
console.log('Build Time:', process.env.BUILD_TIME);
```
## 🔍 故障排除
### 常见问题
1. **权限错误**
```bash
chmod +x build.sh docker-build.sh deploy.sh
```
2. **Git 仓库检查失败**
确保在 git 仓库目录中运行脚本
3. **Docker 构建失败**
检查 Docker 是否正在运行,以及 Dockerfile 语法是否正确
### 检查构建结果
```bash
# 查看构建的镜像
docker images | grep bw-mini-app-server
# 运行测试
docker run -p 3000:3000 bw-mini-app-server:latest
# 检查容器日志
docker logs <容器ID>
```
## 💡 最佳实践
1. **提交代码后构建**:确保在构建前提交所有更改
2. **使用标签发布**:重要版本使用 git tag 标记
3. **环境隔离**:开发和生产环境使用不同的构建配置
4. **定期清理**:清理不需要的 Docker 镜像以节省空间
```bash
# 清理未使用的镜像
docker image prune -f
# 清理所有未使用的资源
docker system prune -f
```