jpom-parent 607 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. commit eabdf7795e885242f7346d2ba303cc9678f38505
  2. Author: bwcx_jzy <bwcx_jzy@163.com>
  3. Date: Wed Jul 30 20:01:43 2025 +0800
  4. feat(server): 优化 Docker镜像构建支持配置网络模式- 在 Docker 镜像构建过程中添加网络模式配置选项
  5. - 在前端界面增加网络模式选择框,支持 bridge、none、container 和 host 四种模式
  6. - 在后端代码中添加网络模式参数处理逻辑
  7. - 更新构建配置模块,增加 dockerImagesNetworkMode 字段
  8. - 在构建管理中添加网络模式参数传递
  9. diff --git a/CHANGELOG-BETA.md b/CHANGELOG-BETA.md
  10. index 2e80119ad..31efec734 100644
  11. --- a/CHANGELOG-BETA.md
  12. +++ b/CHANGELOG-BETA.md
  13. @@ -5,6 +5,7 @@
  14. ### 🐣 新增功能
  15. 1. 【server】新增 数据库支持使用达梦数据库(感谢[@wxyShine](https://gitee.com/wxyShine) )
  16. +2. 【server】新增 FTP 管理,文件查看和构建发布方式新增 FTP 支持
  17. ### 🐞 解决BUG、优化功能
  18. @@ -12,6 +13,7 @@
  19. 2. 【server】修复 终端输入命令,按Backspace 会退出终端(感谢[@dgs](https://gitee.com/dgs0924) [Gitee issues ICA57K](https://gitee.com/dromara/Jpom/issues/ICA57K) )
  20. 3. 【server】优化 脚本日志和 SSH 命令日志支持批量删除(感谢[@lin_yeqi](https://gitee.com/lin_yeqi) [Gitee issues IBIM6W](https://gitee.com/dromara/Jpom/issues/IBIM6W) )
  21. 4. 【server】修复 表格自定义列在部分字段不生效情况
  22. +5. 【server】优化 构建发布方式中 Docker 镜像支持配置网络模式(感谢@酱总)
  23. ------
  24. 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
  25. index bbc9a83a8..795a0dc0b 100644
  26. --- a/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java
  27. +++ b/modules/server/src/main/java/org/dromara/jpom/build/BuildExtraModule.java
  28. @@ -153,6 +153,10 @@ public class BuildExtraModule extends BaseModel {
  29. * 镜像标签
  30. */
  31. private String dockerImagesLabels;
  32. + /**
  33. + * 镜像网络模式
  34. + */
  35. + private String dockerImagesNetworkMode;
  36. /**
  37. * 项目二级目录
  38. */
  39. 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
  40. index 23f727593..00343ef37 100644
  41. --- a/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java
  42. +++ b/modules/server/src/main/java/org/dromara/jpom/build/ReleaseManage.java
  43. @@ -392,6 +392,7 @@ public class ReleaseManage {
  44. map.put("pull", extraModule.getDockerBuildPull());
  45. map.put("noCache", extraModule.getDockerNoCache());
  46. map.put("labels", extraModule.getDockerImagesLabels());
  47. + map.put("networkMode", extraModule.getDockerImagesNetworkMode());
  48. map.put("env", envMap);
  49. Consumer<String> logConsumer = logRecorder::append;
  50. map.put("logConsumer", logConsumer);
  51. 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
  52. index 79e4bddb2..20c79b7d4 100644
  53. --- a/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java
  54. +++ b/modules/sub-plugin/docker-cli/src/main/java/org/dromara/jpom/DefaultDockerPluginImpl.java
  55. @@ -374,6 +374,7 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
  56. File baseDirectory = (File) parameter.get("baseDirectory");
  57. String tags = (String) parameter.get("tags");
  58. String buildArgs = (String) parameter.get("buildArgs");
  59. + String networkMode = (String) parameter.get("networkMode");
  60. Object pull = parameter.get("pull");
  61. Object noCache = parameter.get("noCache");
  62. String labels = (String) parameter.get("labels");
  63. @@ -389,6 +390,9 @@ public class DefaultDockerPluginImpl implements IDockerConfigPlugin {
  64. .withDockerfile(dockerfile)
  65. .withBuildAuthConfigs(authConfigurations)
  66. .withTags(CollUtil.newHashSet(StrUtil.splitTrim(tags, StrUtil.COMMA)));
  67. + if (StrUtil.isNotEmpty(networkMode)){
  68. + buildImageCmd.withNetworkMode(networkMode);
  69. + }
  70. // 添加构建参数
  71. UrlQuery query = UrlQuery.of(buildArgs, CharsetUtil.CHARSET_UTF_8);
  72. query.getQueryMap()
  73. diff --git a/web-vue/src/pages/build/edit.vue b/web-vue/src/pages/build/edit.vue
  74. index 4940d9e24..ae9c6d99a 100644
  75. --- a/web-vue/src/pages/build/edit.vue
  76. +++ b/web-vue/src/pages/build/edit.vue
  77. @@ -748,6 +748,34 @@
  78. </a-col>
  79. </a-row>
  80. </a-form-item>
  81. + <a-form-item :label="$t('i18n_7ddbe15c84')">
  82. + <a-auto-complete
  83. + v-model:value="tempExtraData.dockerImagesNetworkMode"
  84. + :placeholder="$t('i18n_abd9ee868a')"
  85. + :options="[
  86. + {
  87. + title: $t('i18n_c36ab9a223'),
  88. + value: 'bridge'
  89. + },
  90. + {
  91. + title: $t('i18n_3d6acaa5ca'),
  92. + value: 'none'
  93. + },
  94. + {
  95. + title: $t('i18n_fcaef5b17a'),
  96. + value: 'container:<name|id>'
  97. + },
  98. + {
  99. + title: $t('i18n_ff39c45fbc'),
  100. + value: 'host'
  101. + }
  102. + ]"
  103. + >
  104. + <template #option="item">
  105. + {{ item.title }}
  106. + </template>
  107. + </a-auto-complete>
  108. + </a-form-item>
  109. <a-form-item name="swarmId">
  110. <template #label>
  111. <a-tooltip>
  112. @@ -1333,8 +1361,8 @@
  113. chooseScriptVisible === 1
  114. ? tempExtraData.noticeScriptId
  115. : temp.script?.indexOf('$ref.script.') != -1
  116. - ? temp.script.replace('$ref.script.', '')
  117. - : ''
  118. + ? temp.script.replace('$ref.script.', '')
  119. + : ''
  120. "
  121. mode="choose"
  122. @confirm="