diff --git a/Jenkinsfile b/Jenkinsfile index 8b69e9c..51921b2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -181,10 +181,10 @@ def getDockerfileContent(serviceDir) { // 生成docker-compose文件内容的函数 def getComposeFileContent(buildNumber) { - return """version: '3.8' + if (params.DEPLOY_ENV == 'prod') { + return """version: '3.8' services: - timeline-story-service: image: timeline-registry:5000/timeline-story-service:${buildNumber} container_name: timeline-story-service @@ -192,6 +192,8 @@ services: - "30001:30001" environment: - server.port=30001 + - spring.cloud.nacos.discovery.server-addr=nacos-server:8848 + - spring.cloud.nacos.config.server-addr=nacos-server:8848 - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true - spring.datasource.username=root - spring.datasource.password=WoCloud@9ol7uj @@ -210,6 +212,8 @@ services: - "30002:30002" environment: - server.port=30002 + - spring.cloud.nacos.discovery.server-addr=nacos-server:8848 + - spring.cloud.nacos.config.server-addr=nacos-server:8848 - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true - spring.datasource.username=root - spring.datasource.password=WoCloud@9ol7uj @@ -227,6 +231,8 @@ services: - "30003:30003" environment: - server.port=30003 + - spring.cloud.nacos.discovery.server-addr=nacos-server:8848 + - spring.cloud.nacos.config.server-addr=nacos-server:8848 - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true - spring.datasource.username=root - spring.datasource.password=WoCloud@9ol7uj @@ -239,24 +245,30 @@ services: timeline-gateway-service: image: timeline-registry:5000/timeline-gateway-service:${buildNumber} container_name: timeline-gateway-service + depends_on: + - timeline-story-service + - timeline-file-service + - timeline-user-service ports: - "33333:30000" environment: - server.port=30000 + - spring.cloud.nacos.discovery.server-addr=nacos-server:8848 + - spring.cloud.nacos.config.server-addr=nacos-server:8848 - spring.cloud.gateway.routes[0].id=story-service - - spring.cloud.gateway.routes[0].uri=http://timeline-story-service:30001 + - spring.cloud.gateway.routes[0].uri=lb://timeline-story - spring.cloud.gateway.routes[0].predicates[0]=Path=/story/** - spring.cloud.gateway.routes[0].filters[0]=StripPrefix=0 - spring.cloud.gateway.routes[1].id=file-service - - spring.cloud.gateway.routes[1].uri=http://timeline-file-service:30002 + - spring.cloud.gateway.routes[1].uri=lb://timeline-file - spring.cloud.gateway.routes[1].predicates[0]=Path=/file/** - spring.cloud.gateway.routes[1].filters[0]=StripPrefix=0 - spring.cloud.gateway.routes[2].id=user-service - - spring.cloud.gateway.routes[2].uri=http://timeline-user-service:30003 + - spring.cloud.gateway.routes[2].uri=lb://timeline-user - spring.cloud.gateway.routes[2].predicates[0]=Path=/user/** - spring.cloud.gateway.routes[2].filters[0]=StripPrefix=0 - spring.cloud.gateway.routes[3].id=user-service-ws - - spring.cloud.gateway.routes[3].uri=http://timeline-user-service:30003 + - spring.cloud.gateway.routes[3].uri=lb://timeline-user - spring.cloud.gateway.routes[3].predicates[0]=Path=/user/ws/** - spring.cloud.gateway.routes[3].filters[0]=StripPrefix=0 - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true @@ -265,12 +277,108 @@ services: - spring.data.redis.host=host.docker.internal - spring.data.redis.port=36379 - spring.data.redis.password=123456 + extra_hosts: + - "host.docker.internal:host-gateway" +""" + } else { + // 开发和预发布环境 + return """version: '3.8' + +services: + timeline-story-service: + image: timeline-registry:5000/timeline-story-service:${buildNumber} + container_name: timeline-story-service + ports: + - "30001:30001" + environment: + - server.port=30001 + - spring.cloud.nacos.discovery.server-addr=nacos:8848 + - spring.cloud.nacos.config.server-addr=nacos:8848 + - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true + - spring.datasource.username=root + - spring.datasource.password=WoCloud@9ol7uj + - spring.data.redis.host=host.docker.internal + - spring.data.redis.port=36379 + - spring.data.redis.password=123456 + - file.service.url=http://timeline-file-service:30002/file/ + - user.service.url=http://timeline-user-service:30003/user/ + extra_hosts: + - "host.docker.internal:host-gateway" + + timeline-file-service: + image: timeline-registry:5000/timeline-file-service:${buildNumber} + container_name: timeline-file-service + ports: + - "30002:30002" + environment: + - server.port=30002 + - spring.cloud.nacos.discovery.server-addr=nacos:8848 + - spring.cloud.nacos.config.server-addr=nacos:8848 + - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true + - spring.datasource.username=root + - spring.datasource.password=WoCloud@9ol7uj + - minio.endpoint=http://host.docker.internal:9000 + - minio.accessKey=9ttSGjvQxek2uKKlhpqI + - minio.secretKey=12CaKew53tu94tgyDLoqAwAq32iDuz3SWW0O1hex + - minio.bucketName=timeline-test + extra_hosts: + - "host.docker.internal:host-gateway" + + timeline-user-service: + image: timeline-registry:5000/timeline-user-service:${buildNumber} + container_name: timeline-user-service + ports: + - "30003:30003" + environment: + - server.port=30003 + - spring.cloud.nacos.discovery.server-addr=nacos:8848 + - spring.cloud.nacos.config.server-addr=nacos:8848 + - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true + - spring.datasource.username=root + - spring.datasource.password=WoCloud@9ol7uj + - spring.data.redis.host=host.docker.internal + - spring.data.redis.port=36379 + - spring.data.redis.password=123456 + extra_hosts: + - "host.docker.internal:host-gateway" + + timeline-gateway-service: + image: timeline-registry:5000/timeline-gateway-service:${buildNumber} + container_name: timeline-gateway-service depends_on: - timeline-story-service - timeline-file-service - timeline-user-service + ports: + - "33333:30000" + environment: + - server.port=30000 + - spring.cloud.nacos.discovery.server-addr=nacos:8848 + - spring.cloud.nacos.config.server-addr=nacos:8848 + - spring.cloud.gateway.routes[0].id=story-service + - spring.cloud.gateway.routes[0].uri=lb://timeline-story + - spring.cloud.gateway.routes[0].predicates[0]=Path=/story/** + - spring.cloud.gateway.routes[0].filters[0]=StripPrefix=0 + - spring.cloud.gateway.routes[1].id=file-service + - spring.cloud.gateway.routes[1].uri=lb://timeline-file + - spring.cloud.gateway.routes[1].predicates[0]=Path=/file/** + - spring.cloud.gateway.routes[1].filters[0]=StripPrefix=0 + - spring.cloud.gateway.routes[2].id=user-service + - spring.cloud.gateway.routes[2].uri=lb://timeline-user + - spring.cloud.gateway.routes[2].predicates[0]=Path=/user/** + - spring.cloud.gateway.routes[2].filters[0]=StripPrefix=0 + - spring.cloud.gateway.routes[3].id=user-service-ws + - spring.cloud.gateway.routes[3].uri=lb://timeline-user + - spring.cloud.gateway.routes[3].predicates[0]=Path=/user/ws/** + - spring.cloud.gateway.routes[3].filters[0]=StripPrefix=0 + - spring.datasource.url=jdbc:mysql://host.docker.internal:33306/timeline?serverTimezone=UTC&allowPublicKeyRetrieval=true + - spring.datasource.username=root + - spring.datasource.password=WoCloud@9ol7uj + - spring.data.redis.host=host.docker.internal + - spring.data.redis.port=36379 + - spring.data.redis.password=123456 extra_hosts: - "host.docker.internal:host-gateway" - """ -} + } +} \ No newline at end of file diff --git a/deploy.bat b/deploy.bat index fb7f1ba..4ca5ed8 100644 --- a/deploy.bat +++ b/deploy.bat @@ -11,7 +11,7 @@ if %errorlevel% neq 0 ( ) REM 检查 Docker Compose 是否可用 -docker-compose version >nul 2>&1 +docker compose version >nul 2>&1 if %errorlevel% neq 0 ( echo 错误: 未找到 Docker Compose,请先安装 Docker Compose exit /b 1 @@ -23,7 +23,7 @@ call mvnw.cmd clean package -DskipTests REM 构建并启动服务 echo 正在构建并启动服务... -docker-compose up --build -d +docker compose up --build -d REM 等待服务启动 echo 等待服务启动... @@ -31,7 +31,7 @@ timeout /t 30 /nobreak >nul REM 检查服务状态 echo 检查服务状态... -docker-compose ps +docker compose ps echo 部署完成! echo 网关服务: http://localhost:30000 diff --git a/deploy.sh b/deploy.sh index a4f5e45..9a72878 100644 --- a/deploy.sh +++ b/deploy.sh @@ -11,8 +11,8 @@ if ! command -v docker &> /dev/null; then exit 1 fi -if ! command -v docker-compose &> /dev/null; then - echo "错误: 未找到 docker-compose 命令,请先安装 Docker Compose" +if ! command -v docker compose &> /dev/null; then + echo "错误: 未找到 docker compose 命令,请先安装 Docker Compose" exit 1 fi @@ -22,7 +22,7 @@ echo "正在构建项目..." # 构建并启动服务 echo "正在构建并启动服务..." -docker-compose up --build -d +docker compose up --build -d # 等待服务启动 echo "等待服务启动..." @@ -30,7 +30,7 @@ sleep 30 # 检查服务状态 echo "检查服务状态..." -docker-compose ps +docker compose ps echo "部署完成!" echo "网关服务: http://localhost:30000" diff --git a/timeline-file-service/src/main/resources/application.properties b/timeline-file-service/src/main/resources/application.properties index ebe0c28..b768710 100644 --- a/timeline-file-service/src/main/resources/application.properties +++ b/timeline-file-service/src/main/resources/application.properties @@ -3,13 +3,13 @@ spring.datasource.url=jdbc:mysql://59.80.22.43:33306/timeline?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=WoCloud@9ol7uj spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -# MinIO 配置 +# MinIO 配置 minio.endpoint=http://59.80.22.43:9000 minio.accessKey=9ttSGjvQxek2uKKlhpqI minio.secretKey=12CaKew53tu94tgyDLoqAwAq32iDuz3SWW0O1hex minio.bucketName=timeline-test -# MyBatis 配置 +# MyBatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.timeline.file.entity @@ -21,8 +21,8 @@ spring.servlet.multipart.enabled=true spring.servlet.multipart.max-file-size=1000MB spring.servlet.multipart.max-request-size=1000MB -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} # Ensure UTF-8 encoding for logs and web layer to avoid garbled Chinese output diff --git a/timeline-file-service/src/main/resources/bootstrap.properties b/timeline-file-service/src/main/resources/bootstrap.properties index 9343e8d..0b1d3b1 100644 --- a/timeline-file-service/src/main/resources/bootstrap.properties +++ b/timeline-file-service/src/main/resources/bootstrap.properties @@ -1,15 +1,16 @@ -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.config.import=nacos: +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.discovery.namespace=public spring.cloud.nacos.discovery.group=DEFAULT_GROUP -# Nacos配置中心 +# Nacos配置中心 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} spring.cloud.nacos.config.namespace=${spring.cloud.nacos.discovery.namespace} spring.cloud.nacos.config.group=${spring.cloud.nacos.discovery.group} spring.cloud.nacos.config.file-extension=properties -# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 -# spring.cloud.nacos.config.shared-configs[0].data-id=common.properties -# spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP -# spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file +# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 + spring.cloud.nacos.config.shared-configs[0].data-id=common.properties + spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP + spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file diff --git a/timeline-gateway-service/src/main/resources/application.properties b/timeline-gateway-service/src/main/resources/application.properties index f906015..01c6749 100644 --- a/timeline-gateway-service/src/main/resources/application.properties +++ b/timeline-gateway-service/src/main/resources/application.properties @@ -2,11 +2,11 @@ spring.application.name=timeline-gateway server.port=30000 -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} -# 使用Nacos服务发现进行路由 +# 使用Nacos服务发现进行路由 spring.cloud.gateway.routes[0].id=story-service spring.cloud.gateway.routes[0].uri=lb://timeline-story spring.cloud.gateway.routes[0].predicates[0]=Path=/story/** @@ -27,7 +27,7 @@ spring.cloud.gateway.routes[3].uri=lb://timeline-user spring.cloud.gateway.routes[3].predicates[0]=Path=/user/** spring.cloud.gateway.routes[3].filters[0]=StripPrefix=0 -# JWT配置 +# JWT配置 jwt.secret=6f3f9c2b9d9a4e3f8c0d6a7b5c4e3f1a6f3f9c2b9d9a4e3f8c0d6a7b5c4e3f1a jwt.expiration=86400 @@ -37,10 +37,10 @@ spring.data.redis.port=36379 spring.data.redis.password=123456 spring.data.redis.timeout=5000 -# Actuator配置 +# Actuator配置 management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always -# 日志配置 +# 日志配置 logging.level.org.springframework.cloud.gateway=DEBUG logging.level.com.timeline.gateway=DEBUG \ No newline at end of file diff --git a/timeline-gateway-service/src/main/resources/bootstrap.properties b/timeline-gateway-service/src/main/resources/bootstrap.properties index 9343e8d..0b1d3b1 100644 --- a/timeline-gateway-service/src/main/resources/bootstrap.properties +++ b/timeline-gateway-service/src/main/resources/bootstrap.properties @@ -1,15 +1,16 @@ -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.config.import=nacos: +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.discovery.namespace=public spring.cloud.nacos.discovery.group=DEFAULT_GROUP -# Nacos配置中心 +# Nacos配置中心 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} spring.cloud.nacos.config.namespace=${spring.cloud.nacos.discovery.namespace} spring.cloud.nacos.config.group=${spring.cloud.nacos.discovery.group} spring.cloud.nacos.config.file-extension=properties -# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 -# spring.cloud.nacos.config.shared-configs[0].data-id=common.properties -# spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP -# spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file +# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 + spring.cloud.nacos.config.shared-configs[0].data-id=common.properties + spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP + spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file diff --git a/timeline-story-service/src/main/resources/bootstrap.properties b/timeline-story-service/src/main/resources/bootstrap.properties index 9343e8d..0b1d3b1 100644 --- a/timeline-story-service/src/main/resources/bootstrap.properties +++ b/timeline-story-service/src/main/resources/bootstrap.properties @@ -1,15 +1,16 @@ -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.config.import=nacos: +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.discovery.namespace=public spring.cloud.nacos.discovery.group=DEFAULT_GROUP -# Nacos配置中心 +# Nacos配置中心 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} spring.cloud.nacos.config.namespace=${spring.cloud.nacos.discovery.namespace} spring.cloud.nacos.config.group=${spring.cloud.nacos.discovery.group} spring.cloud.nacos.config.file-extension=properties -# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 -# spring.cloud.nacos.config.shared-configs[0].data-id=common.properties -# spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP -# spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file +# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 + spring.cloud.nacos.config.shared-configs[0].data-id=common.properties + spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP + spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file diff --git a/timeline-user-service/src/main/resources/application.properties b/timeline-user-service/src/main/resources/application.properties index a36be89..658dd38 100644 --- a/timeline-user-service/src/main/resources/application.properties +++ b/timeline-user-service/src/main/resources/application.properties @@ -32,7 +32,7 @@ spring.data.redis.password=123456 spring.data.redis.timeout=5000 # Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} # 连接池 diff --git a/timeline-user-service/src/main/resources/bootstrap.properties b/timeline-user-service/src/main/resources/bootstrap.properties index 9343e8d..c785034 100644 --- a/timeline-user-service/src/main/resources/bootstrap.properties +++ b/timeline-user-service/src/main/resources/bootstrap.properties @@ -1,15 +1,16 @@ -# Nacos配置 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +# Nacos配置 +spring.config.import=nacos: +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR:127.0.0.1:8848} spring.cloud.nacos.discovery.namespace=public spring.cloud.nacos.discovery.group=DEFAULT_GROUP -# Nacos配置中心 +# Nacos配置中心 spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr} spring.cloud.nacos.config.namespace=${spring.cloud.nacos.discovery.namespace} spring.cloud.nacos.config.group=${spring.cloud.nacos.discovery.group} spring.cloud.nacos.config.file-extension=properties -# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 -# spring.cloud.nacos.config.shared-configs[0].data-id=common.properties -# spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP -# spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file +# 如果需要从Nacos配置中心加载配置文件,取消下面的注释 +spring.cloud.nacos.config.shared-configs[0].data-id=common.properties +spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP +spring.cloud.nacos.config.shared-configs[0].refresh=true \ No newline at end of file