diff --git a/agent/app/api/v2/docker.go b/agent/app/api/v2/docker.go index a612136ed..622dcbb6f 100644 --- a/agent/app/api/v2/docker.go +++ b/agent/app/api/v2/docker.go @@ -72,7 +72,7 @@ func (b *BaseApi) UpdateDaemonJson(c *gin.Context) { return } - if err := dockerService.UpdateConf(req); err != nil { + if err := dockerService.UpdateConf(req, true); err != nil { helper.InternalServer(c, err) return } diff --git a/agent/app/service/docker.go b/agent/app/service/docker.go index 10323601f..11ca1b32f 100644 --- a/agent/app/service/docker.go +++ b/agent/app/service/docker.go @@ -21,7 +21,7 @@ import ( type DockerService struct{} type IDockerService interface { - UpdateConf(req dto.SettingUpdate) error + UpdateConf(req dto.SettingUpdate, withRestart bool) error UpdateLogOption(req dto.LogOption) error UpdateIpv6Option(req dto.Ipv6Option) error UpdateConfByFile(info dto.DaemonJsonUpdateByFile) error @@ -136,7 +136,7 @@ func (u *DockerService) LoadDockerConf() (*dto.DaemonJsonConf, error) { return &data, nil } -func (u *DockerService) UpdateConf(req dto.SettingUpdate) error { +func (u *DockerService) UpdateConf(req dto.SettingUpdate, withRestart bool) error { err := createIfNotExistDaemonJsonFile() if err != nil { return err @@ -222,9 +222,12 @@ func (u *DockerService) UpdateConf(req dto.SettingUpdate) error { } } if len(daemonMap) == 0 { + if len(file) == 0 { + return nil + } _ = os.Remove(constant.DaemonJsonPath) - if err := restartDocker(); err != nil { - return err + if withRestart { + return restartDocker() } return nil } @@ -232,6 +235,9 @@ func (u *DockerService) UpdateConf(req dto.SettingUpdate) error { if err != nil { return err } + if string(newJson) == string(file) { + return nil + } if err := os.WriteFile(constant.DaemonJsonPath, newJson, 0640); err != nil { return err } @@ -239,8 +245,8 @@ func (u *DockerService) UpdateConf(req dto.SettingUpdate) error { return err } - if err := restartDocker(); err != nil { - return err + if withRestart { + return restartDocker() } return nil } diff --git a/frontend/src/components/docker-proxy/dialog.vue b/frontend/src/components/docker-proxy/dialog.vue new file mode 100644 index 000000000..1713e7507 --- /dev/null +++ b/frontend/src/components/docker-proxy/dialog.vue @@ -0,0 +1,83 @@ + + + diff --git a/frontend/src/components/docker-proxy/index.vue b/frontend/src/components/docker-proxy/index.vue new file mode 100644 index 000000000..7de9bd8c5 --- /dev/null +++ b/frontend/src/components/docker-proxy/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/frontend/src/components/license-import/index.vue b/frontend/src/components/license-import/index.vue index c9e18ddfd..e613520ba 100644 --- a/frontend/src/components/license-import/index.vue +++ b/frontend/src/components/license-import/index.vue @@ -23,8 +23,17 @@ {{ $t('license.importHelper') }} + + {{ $t('xpack.node.syncWithMaster') }} + +
{{ $t('license.updateForce') }}
@@ -50,6 +59,7 @@ import i18n from '@/lang'; import { ref } from 'vue'; import { MsgSuccess } from '@/utils/message'; import { uploadLicense } from '@/api/modules/setting'; +import DockerProxy from '@/components/docker-proxy/index.vue'; import { GlobalStore } from '@/store'; import { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, genFileId } from 'element-plus'; import { getXpackSettingForTheme } from '@/utils/xpack'; @@ -62,6 +72,8 @@ const uploaderFiles = ref([]); const isImport = ref(); const isForce = ref(); +const withDockerRestart = ref(); + const oldLicense = ref(); interface DialogProps { oldLicense: string; @@ -112,6 +124,7 @@ const submit = async () => { } if (!isImport.value) { formData.append('currentNode', globalStore.currentNode); + formData.append('withDockerRestart', withDockerRestart.value); } formData.append('isForce', isForce.value); loading.value = true; diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index dc71262cb..8e4186032 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1598,6 +1598,7 @@ const message = { confDockerProxy: 'Configure Docker Proxy', restartNowHelper: 'Configuring Docker proxy requires restarting the Docker service.', restartNow: 'Restart immediately', + restartLater: 'Restart manually later', systemIPWarning: 'The current node has no default access address configured. Please go to panel settings to configure it!', systemIPWarning1: 'The current server address is set to {0}, and quick redirection is not possible!', @@ -3331,7 +3332,16 @@ const message = { syncInfo: 'Sync', syncHelper: 'When master node data changes, it synchronizes to this child node in real-time', syncBackupAccount: 'Backup account settings', + syncWithMaster: + 'After upgrading to Pro, all data will be synced by default. Sync policies can be manually adjusted in node management.', syncProxy: 'System proxy settings', + syncProxyHelper: 'Syncing system proxy settings requires Docker restart', + syncProxyHelper1: 'Restarting Docker may affect currently running container services.', + syncProxyHelper2: 'You can manually restart in the Containers - Configuration page.', + syncProxyHelper3: + 'Syncing system proxy settings requires Docker restart, which may affect currently running container services', + syncProxyHelper4: + 'Syncing system proxy settings requires Docker restart. You can manually restart later in the Containers - Configuration page.', syncCustomApp: 'Sync Custom App Repository', syncAlertSetting: 'System alert settings', syncNodeInfo: 'Node basic data,', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index ba930367a..51c0b2188 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -1532,6 +1532,7 @@ const message = { confDockerProxy: 'Dockerプロキシを構成します', restartNowHelper: 'Dockerプロキシの構成には、Dockerサービスを再起動する必要があります。', restartNow: 'すぐに再起動します', + restartLater: '後で手動で再起動', systemIPWarning: '現在のノードにはデフォルトアクセスアドレスが設定されていません。パネル設定から設定してください!', systemIPWarning1: `現在のサーバーアドレスは{0}に設定されており、クイックリダイレクトは不可能です!`, @@ -3188,7 +3189,16 @@ const message = { syncInfo: 'データ同期,', syncHelper: 'マスターノードのデータが変更されると、この子ノードにリアルタイムで同期されます,', syncBackupAccount: 'バックアップアカウント設定', + syncWithMaster: + 'プロ版にアップグレード後、すべてのデータがデフォルトで同期されます。ノード管理で同期ポリシーを手動調整できます。', syncProxy: 'システムプロキシ設定', + syncProxyHelper: 'システムプロキシ設定の同期にはDockerの再起動が必要です', + syncProxyHelper1: 'Dockerの再起動は現在実行中のコンテナサービスに影響する可能性があります。', + syncProxyHelper2: 'コンテナ - 設定 ページで手動で再起動できます。', + syncProxyHelper3: + 'システムプロキシ設定の同期にはDockerの再起動が必要で、現在実行中のコンテナサービスに影響する可能性があります', + syncProxyHelper4: + 'システムプロキシ設定の同期にはDockerの再起動が必要です。後でコンテナ - 設定 ページで手動で再起動できます。', syncCustomApp: 'カスタムアプリリポジトリを同期', syncAlertSetting: 'システムアラート設定', syncNodeInfo: 'ノード基本データ,', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 73742288a..89a83ec3e 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -1518,6 +1518,7 @@ const message = { confDockerProxy: 'Docker 프록시 구성', restartNowHelper: 'Docker 프록시 구성을 위해 Docker 서비스를 재시작해야 합니다.', restartNow: '즉시 재시작', + restartLater: '나중에 수동으로 재시작', systemIPWarning: '현재 노드에 기본 접근 주소가 설정되지 않았습니다. 패널 설정에서 설정해 주세요!', systemIPWarning1: '현재 서버 주소는 {0}으로 설정되어 있어 빠른 리디렉션이 불가능합니다!', defaultNetwork: '네트워크 카드', @@ -3133,7 +3134,16 @@ const message = { syncInfo: '데이터 동기화,', syncHelper: '마스터 노드 데이터가 변경되면, 이 자식 노드에 실시간으로 동기화됩니다,', syncBackupAccount: '백업 계정 설정', + syncWithMaster: + '프로 버전으로 업그레이드 후 모든 데이터가 기본적으로 동기화됩니다. 노드 관리에서 동기화 정책을 수동으로 조정할 수 있습니다.', syncProxy: '시스템 프록시 설정', + syncProxyHelper: '시스템 프록시 설정 동기화에는 Docker 재시작이 필요합니다', + syncProxyHelper1: 'Docker 재시작은 현재 실행 중인 컨테이너 서비스에 영향을 줄 수 있습니다.', + syncProxyHelper2: '컨테이너 - 설정 페이지에서 수동으로 재시작할 수 있습니다.', + syncProxyHelper3: + '시스템 프록시 설정 동기화에는 Docker 재시작이 필요하며, 현재 실행 중인 컨테이너 서비스에 영향을 줄 수 있습니다', + syncProxyHelper4: + '시스템 프록시 설정 동기화에는 Docker 재시작이 필요합니다. 나중에 컨테이너 - 설정 페이지에서 수동으로 재시작할 수 있습니다.', syncCustomApp: '사용자 정의 앱 저장소 동기화', syncAlertSetting: '시스템 경고 설정', syncNodeInfo: '노드 기본 데이터,', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 58f98b85f..7ada74733 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -1582,6 +1582,7 @@ const message = { confDockerProxy: 'Konfigurasi proksi docker', restartNowHelper: 'Mengkonfigurasi proksi Docker memerlukan memulakan semula perkhidmatan Docker.', restartNow: 'Mulakan semula sekarang', + restartLater: 'Mulakan semula secara manual nanti', systemIPWarning: 'Nod semasa belum mempunyai alamat akses lalai yang dikonfigurasi. Sila pergi ke tetapan panel untuk mengkonfigurasinya!', systemIPWarning1: 'Alamat pelayan semasa ditetapkan kepada {0}, dan pengalihan cepat tidak mungkin!', @@ -3258,7 +3259,16 @@ const message = { syncInfo: 'Penyegerakan data,', syncHelper: 'Apabila data nod induk berubah, ia akan disegerakkan ke nod anak ini secara masa nyata,', syncBackupAccount: 'Tetapan akaun sandaran', + syncWithMaster: + 'Selepas menaik taraf ke Pro, semua data akan diselaraskan secara lalai. Dasar penyelarasan boleh disesuaikan secara manual dalam pengurusan nod.', syncProxy: 'Tetapan proksi sistem', + syncProxyHelper: 'Penyelarasan tetapan proksi sistem memerlukan mulakan semula Docker', + syncProxyHelper1: 'Memulakan semula Docker mungkin menjejaskan perkhidmatan kontena yang sedang berjalan.', + syncProxyHelper2: 'Anda boleh mulakan semula secara manual di halaman Kontena - Konfigurasi.', + syncProxyHelper3: + 'Penyelarasan tetapan proksi sistem memerlukan mulakan semula Docker, yang mungkin menjejaskan perkhidmatan kontena yang sedang berjalan', + syncProxyHelper4: + 'Penyelarasan tetapan proksi sistem memerlukan mulakan semula Docker. Anda boleh mulakan semula secara manual di halaman Kontena - Konfigurasi nanti.', syncCustomApp: 'Segerakan Repositori Aplikasi Tersuai', syncAlertSetting: 'Tetapan amaran sistem', syncNodeInfo: 'Data asas nod,', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 1dcda7de9..7a5c30848 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -1565,6 +1565,7 @@ const message = { confDockerProxy: 'Configurar proxy do Docker', restartNowHelper: 'Configurar o proxy do Docker exige reiniciar o serviço Docker.', restartNow: 'Reiniciar imediatamente', + restartLater: 'Reiniciar manualmente mais tarde', systemIPWarning: 'O nó atual não tem um endereço de acesso padrão configurado. Por favor, vá para as configurações do painel para configurá-lo!', systemIPWarning1: @@ -3265,7 +3266,16 @@ const message = { syncInfo: 'Sincronização de dados,', syncHelper: 'Quando os dados do nó mestre mudam, são sincronizados em tempo real para este nó filho,', syncBackupAccount: 'Configurações de conta de backup', + syncWithMaster: + 'Após atualizar para Pro, todos os dados serão sincronizados por padrão. As políticas de sincronização podem ser ajustadas manualmente no gerenciamento de nós.', syncProxy: 'Configurações de proxy do sistema', + syncProxyHelper: 'Sincronizar configurações de proxy do sistema requer reinicialização do Docker', + syncProxyHelper1: 'Reiniciar o Docker pode afetar os serviços de contêiner em execução.', + syncProxyHelper2: 'Você pode reiniciar manualmente na página Contêineres - Configuração.', + syncProxyHelper3: + 'Sincronizar configurações de proxy do sistema requer reinicialização do Docker, o que pode afetar os serviços de contêiner em execução', + syncProxyHelper4: + 'Sincronizar configurações de proxy do sistema requer reinicialização do Docker. Você pode reiniciar manualmente mais tarde na página Contêineres - Configuração.', syncCustomApp: 'Sincronizar Repositório de Aplicativos Personalizados', syncAlertSetting: 'Configurações de alerta do sistema', syncNodeInfo: 'Dados básicos do nó,', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index aa0c7f8cd..48b2bb7a5 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -1568,6 +1568,7 @@ const message = { confDockerProxy: 'Настроить прокси docker', restartNowHelper: 'Настройка прокси Docker требует перезапуска службы Docker.', restartNow: 'Перезапустить немедленно', + restartLater: 'Перезагрузить вручную позже', systemIPWarning: 'Текущий узел не имеет настроенного адреса доступа по умолчанию. Пожалуйста, перейдите в настройки панели для его настройки!', systemIPWarning1: 'Текущий адрес сервера установлен на {0}, быстрое перенаправление невозможно!', @@ -3252,7 +3253,16 @@ const message = { syncHelper: 'При изменении данных главного узла, происходит синхронизация с этим дочерним узлом в реальном времени,', syncBackupAccount: 'Настройки резервной учётной записи', + syncWithMaster: + 'После обновления до Pro все данные будут синхронизироваться по умолчанию. Политики синхронизации можно настроить вручную в управлении узлами.', syncProxy: 'Настройки системного прокси', + syncProxyHelper: 'Синхронизация настроек системного прокси требует перезапуска Docker', + syncProxyHelper1: 'Перезапуск Docker может повлиять на работающие сервисы контейнеров.', + syncProxyHelper2: 'Вы можете перезапустить вручную на странице Контейнеры - Конфигурация.', + syncProxyHelper3: + 'Синхронизация настроек системного прокси требует перезапуска Docker, что может повлиять на работающие сервисы контейнеров', + syncProxyHelper4: + 'Синхронизация настроек системного прокси требует перезапуска Docker. Вы можете перезапустить вручную позже на странице Контейнеры - Конфигурация.', syncCustomApp: 'Синхронизировать пользовательский репозиторий приложений', syncAlertSetting: 'Настройки системных предупреждений', syncNodeInfo: 'Базовые данные узла,', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 6569f143a..8ce4b2c08 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -1510,6 +1510,7 @@ const message = { confDockerProxy: '配寘 Docker 代理', restartNowHelper: '配寘 Docker 代理需要重啓 Docker 服務。', restartNow: '立即重啓', + restartLater: '稍後手動重啟', systemIPWarning: '當前節點尚未配置預設存取地址,請前往面板設定進行設定!', systemIPWarning1: '當前服務器地址設置為 {0},無法快速跳轉!', changePassword: '密碼修改', @@ -3087,7 +3088,13 @@ const message = { syncInfo: '數據同步,', syncHelper: '當主節點數據發生變化時,實時同步到該子節點,', syncBackupAccount: '備份帳號設定', + syncWithMaster: '升級為專業版後,將預設同步所有資料,可在節點管理中手動調整同步策略。', syncProxy: '系統代理設定', + syncProxyHelper: '同步系統代理設定需要重啟 Docker', + syncProxyHelper1: '重啟 Docker 可能會影響當前正在運行的容器服務。', + syncProxyHelper2: '可前往 容器 - 設定 頁面手動重啟。', + syncProxyHelper3: '同步系統代理設定需要重啟 Docker,重啟可能會影響當前正在運行的容器服務', + syncProxyHelper4: '同步系統代理設定需要重啟 Docker,可稍後前往 容器 - 設定 頁面手動重啟。', syncCustomApp: '同步自訂應用倉庫', syncAlertSetting: '系統告警設定', syncNodeInfo: '節點基礎數據,', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 841ae58f9..69d983622 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1506,6 +1506,7 @@ const message = { confDockerProxy: '配置 Docker 代理', restartNowHelper: '配置 Docker 代理需要重启 Docker 服务。', restartNow: '立即重启', + restartLater: '稍后手动重启', systemIPWarning: '当前节点尚未配置默认访问地址,请前往面板设置进行设置!', systemIPWarning1: '当前服务器地址设置为 {0},无法快速跳转!', changePassword: '密码修改', @@ -3069,7 +3070,13 @@ const message = { syncInfo: '数据同步', syncHelper: '主节点数据发生变化时,实时同步到该子节点', syncBackupAccount: '备份账号设置', + syncWithMaster: '升级为专业版后,将默认同步所有数据,可在节点管理中手动调整同步策略。', syncProxy: '系统代理设置', + syncProxyHelper: '同步系统代理设置需要重启 Docker', + syncProxyHelper1: '重启 Docker 可能会影响当前正在运行的容器服务。', + syncProxyHelper2: '可前往 容器 - 配置 页面手动重启。', + syncProxyHelper3: '同步系统代理设置需要重启 Docker,重启可能会影响当前正在运行的容器服务', + syncProxyHelper4: '同步系统代理设置需要重启 Docker,可稍后前往 容器 - 配置 页面手动重启。', syncCustomApp: '同步自定义应用仓库', syncAlertSetting: '系统告警设置', syncNodeInfo: '节点基础数据', diff --git a/frontend/src/views/setting/license/bind/xpack.vue b/frontend/src/views/setting/license/bind/xpack.vue index 63850753f..5750c466e 100644 --- a/frontend/src/views/setting/license/bind/xpack.vue +++ b/frontend/src/views/setting/license/bind/xpack.vue @@ -18,10 +18,18 @@ - - - - +
+ +
+
+ +
+
+ +
+
+ +
{{ $t('xpack.node.syncHelper') }}
@@ -34,12 +42,15 @@ + +