diff --git a/agent/app/repo/runtime.go b/agent/app/repo/runtime.go index 7adc116488cc..cc23def474d5 100644 --- a/agent/app/repo/runtime.go +++ b/agent/app/repo/runtime.go @@ -64,8 +64,13 @@ func (r *RuntimeRepo) WithNotId(id uint) DBOption { func (r *RuntimeRepo) WithPort(port int) DBOption { return func(g *gorm.DB) *gorm.DB { portStr := fmt.Sprintf("%d", port) - regexPattern := fmt.Sprintf("(^|,)%s(,|$)", portStr) - return g.Where("port REGEXP ?", regexPattern) + return g.Debug().Where( + "port = ? OR port LIKE ? OR port LIKE ? OR port LIKE ?", + portStr, + portStr+",%", + "%,"+portStr, + "%,"+portStr+",%", + ) } } diff --git a/agent/app/service/runtime.go b/agent/app/service/runtime.go index 2d7502df80e5..6f42fdf8f6b4 100644 --- a/agent/app/service/runtime.go +++ b/agent/app/service/runtime.go @@ -1022,11 +1022,15 @@ func (r *RuntimeService) UpdatePHPContainer(req request.PHPContainerConfig) erro return err } var ( - hostPorts []string composeContent []byte ) for _, export := range req.ExposedPorts { - hostPorts = append(hostPorts, strconv.Itoa(export.HostPort)) + if strconv.Itoa(export.HostPort) == runtime.Port { + return buserr.WithName("ErrPHPRuntimePortFailed", strconv.Itoa(export.HostPort)) + } + if export.ContainerPort == 9000 { + return buserr.New("ErrPHPPortIsDefault") + } if err = checkRuntimePortExist(export.HostPort, false, runtime.ID); err != nil { return err } @@ -1075,6 +1079,7 @@ func (r *RuntimeService) UpdatePHPContainer(req request.PHPContainerConfig) erro for k, v := range newMap { envs[k] = v } + envs["PANEL_APP_PORT_HTTP"] = runtime.Port envStr, err := gotenv.Marshal(envs) if err != nil { return err diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index c04219756bf9..2007bfc8c002 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'The scripts configuration item was not found in package.jso ErrContainerNameNotFound: 'Unable to get container name, please check .env file' ErrNodeModulesNotFound: 'The node_modules folder does not exist! Please edit the runtime environment or wait for the runtime environment to start successfully' ErrContainerNameIsNull: 'Container name does not exist' +ErrPHPPortIsDefault: "Port 9000 is the default port, please modify and try again" +ErrPHPRuntimePortFailed: "The port {{ .name }} is already used by the current runtime environment, please modify and try again" #tool ErrConfigNotFound: 'Configuration file does not exist' diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index a5bc7de77710..edb093524117 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'スクリプト構成項目が package.json に見つかり ErrContainerNameNotFound: 'コンテナ名を取得できません。.env ファイルを確認してください' ErrNodeModulesNotFound: 'node_modules フォルダが存在しません。ランタイム環境を編集するか、ランタイム環境が正常に起動するまでお待ちください。' ErrContainerNameIsNull: 'コンテナ名が存在しません' +ErrPHPPortIsDefault: "ポート9000はデフォルトポートです。修正してから再試行してください" +ErrPHPRuntimePortFailed: "ポート {{ .name }} は現在のランタイム環境で使用されています。修正してから再試行してください" #tool ErrConfigNotFound: '構成ファイルが存在しません' diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 7a34df871aab..9a191d10d700 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'package.json에서 스크립트 구성 항목을 찾을 수 ErrContainerNameNotFound: '컨테이너 이름을 가져올 수 없습니다. .env 파일을 확인하세요.' ErrNodeModulesNotFound: 'node_modules 폴더가 없습니다! 런타임 환경을 편집하거나 런타임 환경이 성공적으로 시작될 때까지 기다리십시오' ErrContainerNameIsNull: '컨테이너 이름이 존재하지 않습니다' +ErrPHPPortIsDefault: "9000 포트는 기본 포트입니다. 수정 후 다시 시도하세요" +ErrPHPRuntimePortFailed: "포트 {{ .name }} 는 현재 런타임 환경에서 이미 사용 중입니다. 수정 후 다시 시도하세요" #도구 ErrConfigNotFound: '구성 파일이 존재하지 않습니다' diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index 9ee6ef8135f7..34d050eda368 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'Item konfigurasi skrip tidak ditemui dalam package.json' ErrContainerNameNotFound: 'Tidak dapat mendapatkan nama kontena, sila semak fail .env' ErrNodeModulesNotFound: 'Folder node_modules tidak wujud! Sila edit persekitaran masa jalan atau tunggu persekitaran masa jalan berjaya dimulakan' ErrContainerNameIsNull: 'Nama kontena tidak wujud' +ErrPHPPortIsDefault: "Порт 9000 является портом по умолчанию, пожалуйста, измените и попробуйте снова" +ErrPHPRuntimePortFailed: "Порт {{ .name }} уже используется текущей средой выполнения, пожалуйста, измените и попробуйте снова" #alat ErrConfigNotFound: 'Fail konfigurasi tidak wujud' diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 311e75ab858c..b078849cf3cb 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'O item de configuração de scripts não foi encontrado em ErrContainerNameNotFound: 'Não foi possível obter o nome do contêiner, verifique o arquivo .env' ErrNodeModulesNotFound: 'A pasta node_modules não existe! Edite o ambiente de execução ou aguarde até que o ambiente de execução inicie com sucesso' ErrContainerNameIsNull: 'O nome do contêiner não existe' +ErrPHPPortIsDefault: "Port 9000 adalah port lalai, sila ubah dan cuba lagi" +ErrPHPRuntimePortFailed: "Port {{ .name }} telah digunakan oleh persekitaran runtime semasa, sila ubah dan cuba lagi" #ferramenta ErrConfigNotFound: 'O arquivo de configuração não existe' diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index 60018a9ef1a4..4006b18699da 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: 'Элемент конфигурации скриптов н ErrContainerNameNotFound: 'Не удалось получить имя контейнера, проверьте файл .env' ErrNodeModulesNotFound: 'Папка node_modules не существует! Измените среду выполнения или дождитесь ее успешного запуска' ErrContainerNameIsNull: 'Имя контейнера не существует' +ErrPHPPortIsDefault: "A porta 9000 é a porta padrão, por favor, modifique e tente novamente" +ErrPHPRuntimePortFailed: "A porta {{ .name }} já está sendo usada pelo ambiente de tempo de execução atual, por favor, modifique e tente novamente" #инструмент ErrConfigNotFound: 'Файл конфигурации не существует' diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 7a311213b7f0..02e379e42dfb 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -183,6 +183,8 @@ ErrScriptsNotFound: '沒有在package.json 中找到scripts 設定項' ErrContainerNameNotFound: '無法取得容器名稱,請檢查.env 檔案' ErrNodeModulesNotFound: 'node_modules 資料夾不存在!請編輯運行環境或等待運行環境啟動成功' ErrContainerNameIsNull: '容器名稱不存在' +ErrPHPPortIsDefault: "9000 端口為默認端口,請修改後重試" +ErrPHPRuntimePortFailed: "{{ .name }} 端口已被當前運行環境使用,請修改後重試" #tool ErrConfigNotFound: '設定檔不存在' diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index b66b351f6940..b92122a08f73 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -182,6 +182,8 @@ ErrScriptsNotFound: "没有在 package.json 中找到 scripts 配置项" ErrContainerNameNotFound: "无法获取容器名称,请检查 .env 文件" ErrNodeModulesNotFound: "node_modules 文件夹不存在!请编辑运行环境或者等待运行环境启动成功" ErrContainerNameIsNull: "容器名称不存在" +ErrPHPPortIsDefault: "9000 端口为默认端口,请修改后重试" +ErrPHPRuntimePortFailed: "{{ .name }} 端口已被当前运行环境使用,请修改后重试" #tool ErrConfigNotFound: "配置文件不存在"