fix(deploy): Correct 1Panel service configuration
- Require a valid Base64 Nacos auth token in examples and docs - Mount Nacos application config for 1Panel deployments - Adjust service health checks and startup dependencies
This commit is contained in:
+50
-1
@@ -126,10 +126,22 @@ USER_JWT_SECRET=至少32字节随机字符串
|
|||||||
ADMIN_JWT_SECRET=至少32字节随机字符串
|
ADMIN_JWT_SECRET=至少32字节随机字符串
|
||||||
SERVICE_AUTH_TOKEN=至少32字节随机字符串
|
SERVICE_AUTH_TOKEN=至少32字节随机字符串
|
||||||
ADMIN_INIT_PASSWORD=后台管理员初始密码
|
ADMIN_INIT_PASSWORD=后台管理员初始密码
|
||||||
NACOS_AUTH_TOKEN=至少32字节随机字符串
|
NACOS_AUTH_TOKEN=Base64编码且解码后至少32字节的随机字符串
|
||||||
GRAFANA_ADMIN_PASSWORD=强密码
|
GRAFANA_ADMIN_PASSWORD=强密码
|
||||||
```
|
```
|
||||||
|
|
||||||
|
生成 Nacos token:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
openssl rand -base64 32
|
||||||
|
```
|
||||||
|
|
||||||
|
示例值:
|
||||||
|
|
||||||
|
```env
|
||||||
|
NACOS_AUTH_TOKEN=U0VDUkVUS0VZMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
|
||||||
|
```
|
||||||
|
|
||||||
国内服务器建议保留默认 Maven 镜像:
|
国内服务器建议保留默认 Maven 镜像:
|
||||||
|
|
||||||
```env
|
```env
|
||||||
@@ -363,6 +375,43 @@ MAVEN_MIRROR_URL=https://maven.aliyun.com/repository/public
|
|||||||
|
|
||||||
修改 `.env.1panel` 后,需要在 1Panel 中重新构建编排。
|
修改 `.env.1panel` 后,需要在 1Panel 中重新构建编排。
|
||||||
|
|
||||||
|
### Nacos 显示 unhealthy
|
||||||
|
|
||||||
|
如果 1Panel 日志出现:
|
||||||
|
|
||||||
|
```text
|
||||||
|
dependency failed to start: container haovp-nacos is unhealthy
|
||||||
|
```
|
||||||
|
|
||||||
|
新版编排不再让业务服务等待 Nacos `healthy`,也不再给 Nacos 配置 Docker healthcheck。这样可以避免 1Panel 因 Nacos 启动慢而判定整个编排失败。同步新版 `docker-compose.1panel.yml` 后,需要删除失败编排或重新创建容器,让新的依赖策略生效。
|
||||||
|
|
||||||
|
如果仍失败,查看 Nacos 容器内部日志:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker logs --tail 200 haovp-nacos
|
||||||
|
```
|
||||||
|
|
||||||
|
重点检查:
|
||||||
|
|
||||||
|
| 问题 | 处理 |
|
||||||
|
| --- | --- |
|
||||||
|
| `NACOS_AUTH_TOKEN` 相关报错 | 确认 `.env.1panel` 中 `NACOS_AUTH_TOKEN` 是 Base64,且解码后至少 32 字节 |
|
||||||
|
| `No DataSource set` | 先确认服务器上的 `backend/config/nacos/application-1panel.properties` 是“文件”而不是目录,再确认它被挂载到 `/home/nacos/conf/application.properties`,最后用 `--force-recreate` 重建 `haovp-nacos` |
|
||||||
|
| 数据库连接失败 | 确认 `haovp-mysql` 正常,且首次初始化没有被中断 |
|
||||||
|
| 端口占用 | 确认宿主机 `8848` 未被其他服务占用,或修改 `NACOS_HTTP_PORT` |
|
||||||
|
|
||||||
|
推荐的检查顺序:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -l /opt/HAOVP/backend/config/nacos/application-1panel.properties
|
||||||
|
docker inspect haovp-nacos --format '{{range .Mounts}}{{println .Source "->" .Destination}}{{end}}'
|
||||||
|
docker rm -f haovp-nacos
|
||||||
|
docker compose --env-file .env.1panel -f docker-compose.1panel.yml up -d --force-recreate nacos
|
||||||
|
docker logs --tail 200 haovp-nacos
|
||||||
|
```
|
||||||
|
|
||||||
|
如果 `application-1panel.properties` 在服务器上不存在,Docker 可能会把挂载源当成目录处理,Nacos 就还是读不到数据源配置。
|
||||||
|
|
||||||
### 拉取 `haovp/video-*` 镜像失败
|
### 拉取 `haovp/video-*` 镜像失败
|
||||||
|
|
||||||
如果 1Panel 报错类似:
|
如果 1Panel 报错类似:
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ JWT_EXPIRATION=86400
|
|||||||
|
|
||||||
NACOS_USERNAME=nacos
|
NACOS_USERNAME=nacos
|
||||||
NACOS_PASSWORD=nacos
|
NACOS_PASSWORD=nacos
|
||||||
NACOS_AUTH_TOKEN=change-me-nacos-auth-token-at-least-32-bytes-long
|
NACOS_AUTH_TOKEN=U0VDUkVUS0VZMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
|
||||||
|
|
||||||
GRAFANA_ADMIN_USER=admin
|
GRAFANA_ADMIN_USER=admin
|
||||||
GRAFANA_ADMIN_PASSWORD=change-me-grafana-password
|
GRAFANA_ADMIN_PASSWORD=change-me-grafana-password
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
server.servlet.contextPath=/nacos
|
||||||
|
server.port=8848
|
||||||
|
|
||||||
|
spring.datasource.platform=mysql
|
||||||
|
spring.sql.init.platform=mysql
|
||||||
|
|
||||||
|
nacos.plugin.datasource-dialect.type=mysql
|
||||||
|
nacos.plugin.datasource.db.num=1
|
||||||
|
nacos.plugin.datasource.db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:mysql}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos_config}?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||||
|
nacos.plugin.datasource.db.user=${MYSQL_SERVICE_USER:root}
|
||||||
|
nacos.plugin.datasource.db.password=${MYSQL_SERVICE_PASSWORD}
|
||||||
|
|
||||||
|
db.num=1
|
||||||
|
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:mysql}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos_config}?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||||
|
db.user.0=${MYSQL_SERVICE_USER:root}
|
||||||
|
db.password.0=${MYSQL_SERVICE_PASSWORD}
|
||||||
|
db.user=${MYSQL_SERVICE_USER:root}
|
||||||
|
db.password=${MYSQL_SERVICE_PASSWORD}
|
||||||
|
|
||||||
|
management.endpoints.web.exposure.include=*
|
||||||
|
management.metrics.export.elastic.enabled=false
|
||||||
|
management.metrics.export.influx.enabled=false
|
||||||
|
|
||||||
|
nacos.core.auth.enabled=${NACOS_AUTH_ENABLE:true}
|
||||||
|
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
|
||||||
|
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
|
||||||
|
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN}
|
||||||
@@ -110,14 +110,11 @@ services:
|
|||||||
PREFER_HOST_MODE: hostname
|
PREFER_HOST_MODE: hostname
|
||||||
ports:
|
ports:
|
||||||
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${NACOS_HTTP_PORT:-8848}:8848"
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${NACOS_HTTP_PORT:-8848}:8848"
|
||||||
|
volumes:
|
||||||
|
- ./config/nacos/application-1panel.properties:/home/nacos/conf/application.properties:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/liveness"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
networks:
|
networks:
|
||||||
- haovp-network
|
- haovp-network
|
||||||
|
|
||||||
@@ -231,7 +228,7 @@ services:
|
|||||||
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${GATEWAY_HTTP_PORT:-9000}:9000"
|
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${GATEWAY_HTTP_PORT:-9000}:9000"
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
networks:
|
networks:
|
||||||
@@ -253,7 +250,7 @@ services:
|
|||||||
JAVA_OPTS: ${AUTH_JAVA_OPTS:--Xms128m -Xmx256m}
|
JAVA_OPTS: ${AUTH_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
@@ -282,7 +279,7 @@ services:
|
|||||||
JAVA_OPTS: ${USER_JAVA_OPTS:--Xms128m -Xmx256m}
|
JAVA_OPTS: ${USER_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
@@ -317,7 +314,7 @@ services:
|
|||||||
JAVA_OPTS: ${CONTENT_JAVA_OPTS:--Xms256m -Xmx512m}
|
JAVA_OPTS: ${CONTENT_JAVA_OPTS:--Xms256m -Xmx512m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
@@ -345,7 +342,7 @@ services:
|
|||||||
JAVA_OPTS: ${COMMENT_JAVA_OPTS:--Xms128m -Xmx256m}
|
JAVA_OPTS: ${COMMENT_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
@@ -369,7 +366,7 @@ services:
|
|||||||
JAVA_OPTS: ${RECOMMEND_JAVA_OPTS:--Xms128m -Xmx256m}
|
JAVA_OPTS: ${RECOMMEND_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
@@ -395,7 +392,7 @@ services:
|
|||||||
JAVA_OPTS: ${ADMIN_JAVA_OPTS:--Xms128m -Xmx256m}
|
JAVA_OPTS: ${ADMIN_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||||
depends_on:
|
depends_on:
|
||||||
nacos:
|
nacos:
|
||||||
condition: service_healthy
|
condition: service_started
|
||||||
mysql:
|
mysql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
redis-sentinel:
|
redis-sentinel:
|
||||||
|
|||||||
Reference in New Issue
Block a user