From 214241797d5ab6a604b1a8fc5f24ad572466f588 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 22:56:39 +0800 Subject: [PATCH] Fix QlPort and QlGrpcPort environment variables ignored in host network mode and pm2 reload (#2825) * Initial plan * Fix host mode port configuration by using QlPort environment variable Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Fix GRPC_PORT conflict in host network mode Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Ensure BACK_PORT and GRPC_PORT survive pm2 reload with --update-env Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Move env.sh sourcing after fix_config to preserve more environment variables Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Refactor: Extract export_ql_envs function and move env.sh sourcing earlier Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> * Extract load_ql_envs function and reorder initialization in docker-entrypoint.sh and update.sh Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: whyour <22700758+whyour@users.noreply.github.com> --- docker/docker-entrypoint.sh | 11 ++++++++++- shell/api.sh | 16 ++++++++-------- shell/check.sh | 6 +++--- shell/preload/client.js | 2 +- shell/share.sh | 11 ++++++++--- shell/update.sh | 1 + 6 files changed, 31 insertions(+), 16 deletions(-) diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index b06b9abb..547ea19f 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -2,7 +2,13 @@ dir_shell=/ql/shell . $dir_shell/share.sh -. $dir_shell/env.sh + +export_ql_envs() { + # Export BACK_PORT from QlPort for backend server to use + export BACK_PORT="${ql_port}" + # Export GRPC_PORT from QlGrpcPort for gRPC server to use + export GRPC_PORT="${ql_grpc_port}" +} log_with_style() { local level="$1" @@ -13,6 +19,9 @@ log_with_style() { } log_with_style "INFO" "🚀 1. 检测配置文件..." +load_ql_envs +export_ql_envs +. $dir_shell/env.sh import_config "$@" fix_config diff --git a/shell/api.sh b/shell/api.sh index f704e3fb..771a565e 100755 --- a/shell/api.sh +++ b/shell/api.sh @@ -41,7 +41,7 @@ add_cron_api() { fi local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons?t=$currentTimeStamp" \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ --data-raw "{\"name\":\"${name//\"/\\\"}\",\"command\":\"${command//\"/\\\"}\",\"schedule\":\"$schedule\",\"sub_id\":$sub_id}" \ @@ -71,7 +71,7 @@ update_cron_api() { fi local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons?t=$currentTimeStamp" \ -X 'PUT' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ @@ -98,7 +98,7 @@ update_cron_command_api() { fi local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons?t=$currentTimeStamp" \ -X 'PUT' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ @@ -118,7 +118,7 @@ del_cron_api() { local ids="$1" local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons?t=$currentTimeStamp" \ -X 'DELETE' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ @@ -143,7 +143,7 @@ update_cron() { local runningTime="${6:-0}" local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons/status?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons/status?t=$currentTimeStamp" \ -X 'PUT' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ @@ -165,7 +165,7 @@ notify_api() { local content="$2" local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/system/notify?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/system/notify?t=$currentTimeStamp" \ -X 'PUT' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ @@ -185,7 +185,7 @@ find_cron_api() { local params="$1" local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/crons/detail?$params&t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/crons/detail?$params&t=$currentTimeStamp" \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ --compressed @@ -204,7 +204,7 @@ update_auth_config() { local tip="$2" local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/open/system/auth/reset?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/open/system/auth/reset?t=$currentTimeStamp" \ -X 'PUT' \ -H "Authorization: Bearer ${__ql_token__}" \ -H "Content-Type: application/json;charset=UTF-8" \ diff --git a/shell/check.sh b/shell/check.sh index ae4db058..3f47889a 100755 --- a/shell/check.sh +++ b/shell/check.sh @@ -31,7 +31,7 @@ pm2_log() { } check_ql() { - local api=$(curl -s --noproxy "*" "http://0.0.0.0:5700") + local api=$(curl -s --noproxy "*" "http://0.0.0.0:${ql_port}") echo -e "\n=====> 检测面板\n\n$api\n" if [[ $api =~ "
" ]]; then echo -e "=====> 面板服务启动正常\n" @@ -42,10 +42,10 @@ check_pm2() { pm2_log local currentTimeStamp=$(date +%s) local api=$( - curl -s --noproxy "*" "http://0.0.0.0:5700/api/system?t=$currentTimeStamp" \ + curl -s --noproxy "*" "http://0.0.0.0:${ql_port}/api/system?t=$currentTimeStamp" \ -H 'Accept: */*' \ -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36' \ - -H 'Referer: http://0.0.0.0:5700/crontab' \ + -H "Referer: http://0.0.0.0:${ql_port}/crontab" \ -H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \ --compressed ) diff --git a/shell/preload/client.js b/shell/preload/client.js index 605aa9f4..51475311 100644 --- a/shell/preload/client.js +++ b/shell/preload/client.js @@ -5,7 +5,7 @@ const { join } = require('path'); class GrpcClient { static #config = { protoPath: join(process.env.QL_DIR, 'back/protos/api.proto'), - serverAddress: '0.0.0.0:5500', + serverAddress: `0.0.0.0:${process.env.GRPC_PORT || '5500'}`, protoOptions: { keepCase: true, longs: String, diff --git a/shell/share.sh b/shell/share.sh index 235d0bd9..25a6a8c9 100755 --- a/shell/share.sh +++ b/shell/share.sh @@ -84,15 +84,20 @@ init_env() { export PYTHONUNBUFFERED=1 } +load_ql_envs() { + ql_base_url=${QlBaseUrl:-"/"} + ql_port=${QlPort:-"5700"} + ql_grpc_port=${QlGrpcPort:-"5500"} + current_branch=${QL_BRANCH:-""} +} + import_config() { [[ -f $file_config_user ]] && . $file_config_user - ql_base_url=${QlBaseUrl:-"/"} - ql_port=${QlPort:-"5700"} + load_ql_envs command_timeout_time=${CommandTimeoutTime:-""} file_extensions=${RepoFileExtensions:-"js py"} proxy_url=${ProxyUrl:-""} - current_branch=${QL_BRANCH:-""} if [[ -n "${DefaultCronRule}" ]]; then default_cron="${DefaultCronRule}" diff --git a/shell/update.sh b/shell/update.sh index 5c4e1c12..613ebe69 100755 --- a/shell/update.sh +++ b/shell/update.sh @@ -3,6 +3,7 @@ dir_shell=$QL_DIR/shell . $dir_shell/share.sh . $dir_shell/api.sh +load_ql_envs . $dir_shell/env.sh send_mark=$dir_shell/send_mark