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字节随机字符串
|
||||
SERVICE_AUTH_TOKEN=至少32字节随机字符串
|
||||
ADMIN_INIT_PASSWORD=后台管理员初始密码
|
||||
NACOS_AUTH_TOKEN=至少32字节随机字符串
|
||||
NACOS_AUTH_TOKEN=Base64编码且解码后至少32字节的随机字符串
|
||||
GRAFANA_ADMIN_PASSWORD=强密码
|
||||
```
|
||||
|
||||
生成 Nacos token:
|
||||
|
||||
```bash
|
||||
openssl rand -base64 32
|
||||
```
|
||||
|
||||
示例值:
|
||||
|
||||
```env
|
||||
NACOS_AUTH_TOKEN=U0VDUkVUS0VZMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
|
||||
```
|
||||
|
||||
国内服务器建议保留默认 Maven 镜像:
|
||||
|
||||
```env
|
||||
@@ -363,6 +375,43 @@ MAVEN_MIRROR_URL=https://maven.aliyun.com/repository/public
|
||||
|
||||
修改 `.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-*` 镜像失败
|
||||
|
||||
如果 1Panel 报错类似:
|
||||
|
||||
@@ -15,7 +15,7 @@ JWT_EXPIRATION=86400
|
||||
|
||||
NACOS_USERNAME=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_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
|
||||
ports:
|
||||
- "${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:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8848/nacos/v1/console/health/liveness"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 15
|
||||
networks:
|
||||
- haovp-network
|
||||
|
||||
@@ -231,7 +228,7 @@ services:
|
||||
- "${LOCAL_BIND_ADDR:-127.0.0.1}:${GATEWAY_HTTP_PORT:-9000}:9000"
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
redis-sentinel:
|
||||
condition: service_started
|
||||
networks:
|
||||
@@ -253,7 +250,7 @@ services:
|
||||
JAVA_OPTS: ${AUTH_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
@@ -282,7 +279,7 @@ services:
|
||||
JAVA_OPTS: ${USER_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
@@ -317,7 +314,7 @@ services:
|
||||
JAVA_OPTS: ${CONTENT_JAVA_OPTS:--Xms256m -Xmx512m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
@@ -345,7 +342,7 @@ services:
|
||||
JAVA_OPTS: ${COMMENT_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
@@ -369,7 +366,7 @@ services:
|
||||
JAVA_OPTS: ${RECOMMEND_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
@@ -395,7 +392,7 @@ services:
|
||||
JAVA_OPTS: ${ADMIN_JAVA_OPTS:--Xms128m -Xmx256m}
|
||||
depends_on:
|
||||
nacos:
|
||||
condition: service_healthy
|
||||
condition: service_started
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis-sentinel:
|
||||
|
||||
Reference in New Issue
Block a user