3.1 KiB
3.1 KiB
端口配置说明
当前端口配置
后端服务
- 容器内端口: 8888
- 宿主机端口: 8888
- 访问地址:
http://your-server-ip:8888
前端服务
- 容器内端口: 80
- 宿主机端口: 8889
- 访问地址:
http://your-server-ip:8889/ashai-wecom-test
配置文件位置
1. 后端端口配置
文件: backend/application-druid.yml
server:
port: 8888
2. Docker 端口映射
services:
backend:
ports:
- "8888:8888" # 宿主机:容器
frontend:
ports:
- "8889:80" # 宿主机:容器
3. Dockerfile 暴露端口
EXPOSE 8888
修改端口
如果需要修改端口,需要同时修改以上三个地方:
示例:改为 9000 端口
- 修改 application-druid.yml:
server:
port: 9000
- 修改 docker-compose.yml:
ports:
- "9000:9000"
- 修改 Dockerfile:
EXPOSE 9000
- 修改 healthcheck:
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:9000/"]
重新部署
修改端口后需要重新构建:
# 停止并删除旧容器
docker stop wecom-backend wecom-frontend
docker rm wecom-backend wecom-frontend
# 重新构建并启动
cd deploy
docker compose up -d --build
# 查看日志
docker compose logs -f
验证端口
检查容器端口
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
测试后端访问
curl http://localhost:8888
测试前端访问
curl http://localhost:8889/ashai-wecom-test
常见问题
1. 端口被占用
如果启动时报错端口被占用:
# 查看端口占用
netstat -tulpn | grep 8888
# 或使用 lsof(Mac/Linux)
lsof -i :8888
# Windows
netstat -ano | findstr 8888
解决方案:
- 停止占用端口的程序
- 或修改为其他未占用的端口
2. 容器内外端口不一致
如果宿主机 8080 被占用,可以只修改宿主机端口:
ports:
- "9000:8888" # 宿主机 9000 映射到容器 8888
这样:
- 容器内应用仍运行在 8888
- 外部通过 9000 访问
3. 前端无法连接后端
确保前端 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)
↓
返回数据