# 启动和更新后端服务指南

## 方式一：使用 Makefile（推荐）

### 启动完整服务（前端 + 后端 + Nginx）
```bash
make run-2
```

这会：
1. 重新构建前端静态资源
2. 重新构建后端镜像
3. 启动 PostgreSQL、Backend 和 Nginx 服务

### 停止服务
```bash
make clean-2
```

---

## 方式二：只更新后端服务

### 1. 停止服务
```bash
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend down
```

### 2. 重新构建并启动后端
```bash
# 设置环境变量（必须！）
export COMPOSE_PROJECT_NAME=ocdp
export ADAPTER_MODE=production
export BACKEND_BUILD_CONTEXT=$(pwd)/backend
export BACKEND_BUILD_DOCKERFILE=$(pwd)/backend/Dockerfile
export BACKEND_MOCK_BUILD_DOCKERFILE=$(pwd)/backend/Dockerfile.mock
export INIT_DB_SQL_PATH=$(pwd)/backend/scripts/init-db.sql

# 重新构建后端镜像
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend build backend

# 启动服务
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend up -d postgres backend nginx
```

### 3. 或者使用一行命令（强制重建）
```bash
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend up -d --build --force-recreate backend
```

---

## 方式三：只重启后端容器（不重新构建）

```bash
# 重启后端容器
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend restart backend

# 或者先停止再启动
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend stop backend
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend start backend
```

---

## 方式四：查看日志

```bash
# 查看所有服务日志
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend logs -f

# 只查看后端日志
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend logs -f backend
```

---

## 方式五：开发模式（只启动数据库，本地运行后端）

```bash
# 只启动 PostgreSQL
docker compose -f backend/docker-compose.yml up -d postgres

# 然后在本地运行后端
cd backend
go run cmd/api/main.go
```

---

## 常用命令速查

```bash
# 查看运行中的服务
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend ps

# 查看后端容器状态
docker ps | grep ocdp-backend

# 进入后端容器
docker exec -it ocdp-backend sh

# 查看后端健康状态
curl http://localhost:8080/health

# 停止所有服务
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend down

# 停止并删除数据卷（清理数据）
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend down -v
```

---

## 快速更新后端（推荐流程）

```bash
# 1. 停止服务
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend down

# 2. 重新构建并启动（使用 Makefile）
make run-2

# 或者手动执行
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend up -d --build
```

