wecom-dashboards/deploy/PORT-CONFIG.md

3.1 KiB
Raw Permalink Blame History

端口配置说明

当前端口配置

后端服务

  • 容器内端口: 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 端口映射

文件: docker-compose.yml

services:
  backend:
    ports:
      - "8888:8888"  # 宿主机:容器

  frontend:
    ports:
      - "8889:80"    # 宿主机:容器

3. Dockerfile 暴露端口

文件: backend/Dockerfile

EXPOSE 8888

修改端口

如果需要修改端口,需要同时修改以上三个地方:

示例:改为 9000 端口

  1. 修改 application-druid.yml:
server:
  port: 9000
  1. 修改 docker-compose.yml:
ports:
  - "9000:9000"
  1. 修改 Dockerfile:
EXPOSE 9000
  1. 修改 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

# 或使用 lsofMac/Linux
lsof -i :8888

# Windows
netstat -ano | findstr 8888

解决方案:

  • 停止占用端口的程序
  • 或修改为其他未占用的端口

2. 容器内外端口不一致

如果宿主机 8080 被占用,可以只修改宿主机端口:

ports:
  - "9000:8888"  # 宿主机 9000 映射到容器 8888

这样:

  • 容器内应用仍运行在 8888
  • 外部通过 9000 访问

3. 前端无法连接后端

确保前端 Nginx 配置中的后端地址正确:

文件: frontend/nginx.conf

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)
    ↓
返回数据