182 lines
3.1 KiB
Markdown
182 lines
3.1 KiB
Markdown
|
|
# 端口配置说明
|
|||
|
|
|
|||
|
|
## 当前端口配置
|
|||
|
|
|
|||
|
|
### 后端服务
|
|||
|
|
- **容器内端口**: 8888
|
|||
|
|
- **宿主机端口**: 8888
|
|||
|
|
- **访问地址**: `http://your-server-ip:8888`
|
|||
|
|
|
|||
|
|
### 前端服务
|
|||
|
|
- **容器内端口**: 80
|
|||
|
|
- **宿主机端口**: 8889
|
|||
|
|
- **访问地址**: `http://your-server-ip:8889/ashai-wecom-test`
|
|||
|
|
|
|||
|
|
## 配置文件位置
|
|||
|
|
|
|||
|
|
### 1. 后端端口配置
|
|||
|
|
**文件**: [backend/application-druid.yml](backend/application-druid.yml)
|
|||
|
|
```yaml
|
|||
|
|
server:
|
|||
|
|
port: 8888
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Docker 端口映射
|
|||
|
|
**文件**: [docker-compose.yml](docker-compose.yml)
|
|||
|
|
```yaml
|
|||
|
|
services:
|
|||
|
|
backend:
|
|||
|
|
ports:
|
|||
|
|
- "8888:8888" # 宿主机:容器
|
|||
|
|
|
|||
|
|
frontend:
|
|||
|
|
ports:
|
|||
|
|
- "8889:80" # 宿主机:容器
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Dockerfile 暴露端口
|
|||
|
|
**文件**: [backend/Dockerfile](backend/Dockerfile)
|
|||
|
|
```dockerfile
|
|||
|
|
EXPOSE 8888
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 修改端口
|
|||
|
|
|
|||
|
|
如果需要修改端口,需要同时修改以上三个地方:
|
|||
|
|
|
|||
|
|
### 示例:改为 9000 端口
|
|||
|
|
|
|||
|
|
1. **修改 application-druid.yml**:
|
|||
|
|
```yaml
|
|||
|
|
server:
|
|||
|
|
port: 9000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **修改 docker-compose.yml**:
|
|||
|
|
```yaml
|
|||
|
|
ports:
|
|||
|
|
- "9000:9000"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **修改 Dockerfile**:
|
|||
|
|
```dockerfile
|
|||
|
|
EXPOSE 9000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **修改 healthcheck**:
|
|||
|
|
```yaml
|
|||
|
|
healthcheck:
|
|||
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9000/"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 重新部署
|
|||
|
|
|
|||
|
|
修改端口后需要重新构建:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 停止并删除旧容器
|
|||
|
|
docker stop wecom-backend wecom-frontend
|
|||
|
|
docker rm wecom-backend wecom-frontend
|
|||
|
|
|
|||
|
|
# 重新构建并启动
|
|||
|
|
cd deploy
|
|||
|
|
docker compose up -d --build
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker compose logs -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 验证端口
|
|||
|
|
|
|||
|
|
### 检查容器端口
|
|||
|
|
```bash
|
|||
|
|
docker ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该看到类似:
|
|||
|
|
```
|
|||
|
|
CONTAINER ID IMAGE PORTS
|
|||
|
|
xxx deploy-backend 0.0.0.0:8888->8888/tcp
|
|||
|
|
xxx deploy-frontend 0.0.0.0:8889->80/tcp
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试后端访问
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:8888
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试前端访问
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:8889/ashai-wecom-test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### 1. 端口被占用
|
|||
|
|
|
|||
|
|
如果启动时报错端口被占用:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看端口占用
|
|||
|
|
netstat -tulpn | grep 8888
|
|||
|
|
|
|||
|
|
# 或使用 lsof(Mac/Linux)
|
|||
|
|
lsof -i :8888
|
|||
|
|
|
|||
|
|
# Windows
|
|||
|
|
netstat -ano | findstr 8888
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
解决方案:
|
|||
|
|
- 停止占用端口的程序
|
|||
|
|
- 或修改为其他未占用的端口
|
|||
|
|
|
|||
|
|
### 2. 容器内外端口不一致
|
|||
|
|
|
|||
|
|
如果宿主机 8080 被占用,可以只修改宿主机端口:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
ports:
|
|||
|
|
- "9000:8888" # 宿主机 9000 映射到容器 8888
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这样:
|
|||
|
|
- 容器内应用仍运行在 8888
|
|||
|
|
- 外部通过 9000 访问
|
|||
|
|
|
|||
|
|
### 3. 前端无法连接后端
|
|||
|
|
|
|||
|
|
确保前端 Nginx 配置中的后端地址正确:
|
|||
|
|
|
|||
|
|
**文件**: [frontend/nginx.conf](frontend/nginx.conf)
|
|||
|
|
```nginx
|
|||
|
|
location /ashai-wecom-test/prod-api/ {
|
|||
|
|
proxy_pass http://backend:8888/; # 使用容器名和容器内端口
|
|||
|
|
...
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
注意:
|
|||
|
|
- 容器间通信使用**容器名**和**容器内端口**
|
|||
|
|
- 不是宿主机端口
|
|||
|
|
|
|||
|
|
## 完整的访问流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户浏览器
|
|||
|
|
↓
|
|||
|
|
http://server-ip:8889/ashai-wecom-test
|
|||
|
|
↓
|
|||
|
|
宿主机 8889 端口
|
|||
|
|
↓
|
|||
|
|
前端容器 80 端口 (Nginx)
|
|||
|
|
↓
|
|||
|
|
API 请求: /ashai-wecom-test/prod-api/*
|
|||
|
|
↓
|
|||
|
|
Nginx 代理到: http://backend:8888/
|
|||
|
|
↓
|
|||
|
|
后端容器 8888 端口 (Spring Boot)
|
|||
|
|
↓
|
|||
|
|
返回数据
|
|||
|
|
```
|