You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
2.6 KiB

2 months ago
# Docker 发布指南
本文档说明如何将 MarketingSite 项目打包为 Docker 镜像并部署。
## 前置要求
- Docker 已安装并运行
- 项目依赖已安装(`yarn install`)
## 构建 Docker 镜像
### 方法1: 使用 Docker 命令
`site` 目录下执行:
```bash
cd site
docker build -t marketing-site:latest .
```
### 方法2: 使用 docker-compose
`site` 目录下执行:
```bash
cd site
docker-compose build
```
## 运行容器
### 方法1: 使用 Docker 命令
```bash
docker run -d -p 3000:3000 --name marketing-site marketing-site:latest
```
### 方法2: 使用 docker-compose
```bash
cd site
docker-compose up -d
```
容器启动后,访问 http://localhost:3000
## 查看日志
```bash
docker logs -f marketing-site
```
或使用 docker-compose:
```bash
cd site
docker-compose logs -f
```
## 停止和删除容器
```bash
docker stop marketing-site
docker rm marketing-site
```
或使用 docker-compose:
```bash
cd site
docker-compose down
```
## 发布到 Docker Hub
### 1. 登录 Docker Hub
```bash
docker login
```
### 2. 标记镜像
```bash
docker tag marketing-site:latest your-username/marketing-site:latest
```
### 3. 推送到 Docker Hub
```bash
docker push your-username/marketing-site:latest
```
## 发布到私有仓库
### 标记镜像
```bash
docker tag marketing-site:latest registry.example.com/marketing-site:latest
```
### 推送镜像
```bash
docker push registry.example.com/marketing-site:latest
```
## 在其他服务器上运行
```bash
docker pull your-username/marketing-site:latest
docker run -d -p 3000:3000 --name marketing-site your-username/marketing-site:latest
```
## 环境变量配置
如需配置环境变量,可以通过以下方式:
```bash
docker run -d -p 3000:3000 \
-e NODE_ENV=production \
-e NEXT_PUBLIC_API_URL=https://api.example.com \
--name marketing-site \
marketing-site:latest
```
或在 `docker-compose.yml` 中添加:
```yaml
environment:
- NODE_ENV=production
- NEXT_PUBLIC_API_URL=https://api.example.com
```
## 健康检查
镜像已配置为监听 `0.0.0.0:3000`,可在容器启动后进行健康检查:
```bash
curl http://localhost:3000
```
## 故障排查
### 查看容器状态
```bash
docker ps -a
```
### 查看容器日志
```bash
docker logs marketing-site
```
### 进入容器调试
```bash
docker exec -it marketing-site sh
```
## 注意事项
1. 确保端口 3000 未被占用
2. 生产环境建议使用反向代理(如 Nginx)处理 HTTPS
3. 如需修改端口,更新 `docker-compose.yml` 中的端口映射
4. 镜像基于 `node:20-alpine`,体积较小但功能完整