123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- commit eabdf7795e885242f7346d2ba303cc9678f38505
- Author: bwcx_jzy <bwcx_jzy@163.com>
- Date: Wed Jul 30 20:01:43 2025 +0800
- feat(server): 优化 Docker镜像构建支持配置网络模式- 在 Docker 镜像构建过程中添加网络模式配置选项
- - 在前端界面增加网络模式选择框,支持 bridge、none、container 和 host 四种模式
- - 在后端代码中添加网络模式参数处理逻辑
- - 更新构建配置模块,增加 dockerImagesNetworkMode 字段
- - 在构建管理中添加网络模式参数传递
- diff --git a/CHANGELOG-BETA.md b/CHANGELOG-BETA.md
- index 2e80119ad..31efec734 100644
- --- a/CHANGELOG-BETA.md
- +++ b/CHANGELOG-BETA.md
- @@ -5,6 +5,7 @@
- ### 🐣 新增功能
-
- 1. 【server】新增 数据库支持使用达梦数据库(感谢[@wxyShine](https://gitee.com/wxyShine) )
- +2. 【server】新增 FTP 管理,文件查看和构建发布方式新增 FTP 支持
-
- ### 🐞 解决BUG、优化功能
-
- @@ -12,6 +13,7 @@
- 2. 【server】修复 终端输入命令,按Backspace 会退出终端(感谢[@dgs](https://gitee.com/dgs0924) [Gitee issues ICA57K](https://gitee.com/dromara/Jpom/issues/ICA57K) )
- 3. 【server】优化 脚本日志和 SSH 命令日志支持批量删除(感谢[@lin_yeqi](https://gitee.com/lin_yeqi) [Gitee issues IBIM6W](https://gitee.com/dromara/Jpom/issues/IBIM6W) )
- 4. 【server】修复 表格自定义列在部分字段不生效情况
- +5. 【server】优化 构建发布方式中 Docker 镜像支持配置网络模式(感谢@酱总)
-
- ------
-
- diff --git a/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java b/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java
- index bbc9a83a8..795a0dc0b 100644
- --- a/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java
- +++ b/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java
- @@ -153,6 +153,10 @@ public class BuildExtraModule extends BaseModel {
- * 镜像标签
- */
- private String dockerImagesLabels;
- + /**
- + * 镜像网络模式
- + */
- + private String dockerImagesNetworkMode;
- /**
- * 项目二级目录
- */
- diff --git a/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java b/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java
- index 23f727593..00343ef37 100644
- --- a/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java
- +++ b/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java
- @@ -392,6 +392,7 @@ public class ReleaseManage {
- map.put("pull", extraModule.getDockerBuildPull());
- map.put("noCache", extraModule.getDockerNoCache());
- map.put("labels", extraModule.getDockerImagesLabels());
- + map.put("networkMode", extraModule.getDockerImagesNetworkMode());
- map.put("env", envMap);
- Consumer<String> logConsumer = logRecorder::append;
- map.put("logConsumer", logConsumer);
- diff --git a/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java b/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java
- index 79e4bddb2..20c79b7d4 100644
- --- a/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java
- +++ b/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java
- @@ -374,6 +374,7 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
- File baseDirectory = (File) parameter.get("baseDirectory");
- String tags = (String) parameter.get("tags");
- String buildArgs = (String) parameter.get("buildArgs");
- + String networkMode = (String) parameter.get("networkMode");
- Object pull = parameter.get("pull");
- Object noCache = parameter.get("noCache");
- String labels = (String) parameter.get("labels");
- @@ -389,6 +390,9 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
- .withDockerfile(dockerfile)
- .withBuildAuthConfigs(authConfigurations)
- .withTags(CollUtil.newHashSet(StrUtil.splitTrim(tags, StrUtil.COMMA)));
- + if (StrUtil.isNotEmpty(networkMode)){
- + buildImageCmd.withNetworkMode(networkMode);
- + }
- // 添加构建参数
- UrlQuery query = UrlQuery.of(buildArgs, CharsetUtil.CHARSET_UTF_8);
- query.getQueryMap()
- diff --git a/web-vue/src/pages/build/edit.vue b/web-vue/src/pages/build/edit.vue
- index 4940d9e24..ae9c6d99a 100644
- --- a/web-vue/src/pages/build/edit.vue
- +++ b/web-vue/src/pages/build/edit.vue
- @@ -748,6 +748,34 @@
- </a-col>
- </a-row>
- </a-form-item>
- + <a-form-item :label="$t('i18n_7ddbe15c84')">
- + <a-auto-complete
- + v-model:value="tempExtraData.dockerImagesNetworkMode"
- + :placeholder="$t('i18n_abd9ee868a')"
- + :options="[
- + {
- + title: $t('i18n_c36ab9a223'),
- + value: 'bridge'
- + },
- + {
- + title: $t('i18n_3d6acaa5ca'),
- + value: 'none'
- + },
- + {
- + title: $t('i18n_fcaef5b17a'),
- + value: 'container:<name|id>'
- + },
- + {
- + title: $t('i18n_ff39c45fbc'),
- + value: 'host'
- + }
- + ]"
- + >
- + <template #option="item">
- + {{ item.title }}
- + </template>
- + </a-auto-complete>
- + </a-form-item>
- <a-form-item name="swarmId">
- <template #label>
- <a-tooltip>
- @@ -1333,8 +1361,8 @@
- chooseScriptVisible === 1
- ? tempExtraData.noticeScriptId
- : temp.script?.indexOf('$ref.script.') != -1
- - ? temp.script.replace('$ref.script.', '')
- - : ''
- + ? temp.script.replace('$ref.script.', '')
- + : ''
- "
- mode="choose"
- @confirm="
|