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.
spiderman/docker/DOCKER_GUIDE.md

184 lines
3.2 KiB

# Spiderman Docker 使用指南
## 镜像信息
- **镜像名称**: `spiderman`
- **镜像大小**: 66.2MB
- **版本标签**: `latest`, `v1.0.0`
- **基础镜像**: Alpine Linux 3.18
- **Go版本**: 1.23
## 构建Docker镜像
### 1. 构建镜像
```bash
docker build -t spiderman:latest .
```
### 2. 构建并添加版本标签
```bash
docker build -t spiderman:latest .
docker tag spiderman:latest spiderman:v1.0.0
```
## 运行Docker容器
### 1. 基本运行
```bash
docker run -p 8080:8080 spiderman:latest
```
### 2. 后台运行
```bash
docker run -d -p 8080:8080 --name spiderman-api spiderman:latest
```
### 3. 环境变量配置运行
```bash
docker run -p 8080:8080 \
-e PORT=8080 \
-e CHAINCODE_NAME=basic \
-e CHANNEL_NAME=mychannel \
-e LOG_LEVEL=info \
-e LOG_FORMAT=json \
spiderman:latest
```
### 4. 挂载Fabric证书目录
```bash
docker run -p 8080:8080 \
-v /path/to/crypto-config:/crypto-config:ro \
-v /path/to/test-network:/test-network:ro \
spiderman:latest
```
## 使用Docker Compose
### 启动服务
```bash
docker-compose up -d
```
### 查看日志
```bash
docker-compose logs -f spiderman-api
```
### 停止服务
```bash
docker-compose down
```
## 健康检查
容器包含内置健康检查,每30秒检查一次API健康状态:
```bash
# 检查容器健康状态
docker ps
# 或
docker inspect --format='{{.State.Health.Status}}' <container_id>
```
## 端口说明
- **8080**: API服务端口
- **健康检查**: `GET /health`
- **Swagger文档**: `GET /swagger/index.html`
## 容器特性
- ✅ 多阶段构建,最小化镜像大小
- ✅ 非root用户运行,增强安全性
- ✅ 内置健康检查
- ✅ CA证书支持HTTPS请求
- ✅ 支持环境变量配置
## 环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `PORT` | 8080 | API服务端口 |
| `CHAINCODE_NAME` | basic | 链码名称 |
| `CHANNEL_NAME` | mychannel | 通道名称 |
| `LOG_LEVEL` | info | 日志级别 |
| `LOG_FORMAT` | text | 日志格式 |
| `CRYPTO_PATH` | /crypto-config | 证书路径 |
| `PEER_ENDPOINT` | localhost:7051 | Peer节点地址 |
| `GATEWAY_PEER` | peer0.org1.example.com | 网关Peer |
| `MSPID` | Org1MSP | MSP ID |
## 容器管理
### 查看运行中的容器
```bash
docker ps | grep spiderman
```
### 查看容器日志
```bash
docker logs <container_id>
```
### 进入容器
```bash
docker exec -it <container_id> /bin/sh
```
### 停止容器
```bash
docker stop <container_id>
```
### 删除容器
```bash
docker rm <container_id>
```
## 镜像管理
### 查看镜像
```bash
docker images | grep spiderman
```
### 删除镜像
```bash
docker rmi spiderman:latest
```
### 导出镜像
```bash
docker save spiderman:latest -o spiderman.tar
```
### 导入镜像
```bash
docker load -i spiderman.tar
```
## 故障排除
### 1. 容器启动失败
```bash
# 查看容器日志
docker logs <container_id>
# 检查环境变量
docker inspect <container_id>
```
### 2. 网络连接问题
```bash
# 检查端口映射
docker port <container_id>
# 检查网络连接
docker exec -it <container_id> wget -O- http://localhost:8080/health
```
### 3. 证书路径问题
```bash
# 检查挂载的证书目录
docker exec -it <container_id> ls -la /crypto-config
```