当前位置: 首页 > news >正文

备案 网站建设计划书国内站长做国外网站

备案 网站建设计划书,国内站长做国外网站,延安市城乡建设局网站,专业的高端网站制作公司在云原生领域#xff0c;无论使用哪种编排调度平台#xff0c;Kubernetes#xff0c;DockerSwarm#xff0c;OpenShift等#xff0c;业务都需要基于镜像进行交付#xff0c;我们在内部实践“Source-to-image”和链式构建#xff0c;总而总结出“OneBuild”模式。 其核心…在云原生领域无论使用哪种编排调度平台KubernetesDockerSwarmOpenShift等业务都需要基于镜像进行交付我们在内部实践“Source-to-image”和链式构建总而总结出“OneBuild”模式。 其核心思想是一处构建多处使用。 问题 一般我们会使用类似Jenkins CI系统来构建镜像以满足持续集成持续开发持续交付等场景。事实上如果我们在某一方面能够提升效率或者解决镜像交付实践。 长期来看将能够带来不少的成本收益并且对于平台来讲这种收益是一种可度量收益。假设我们在当前交付git分支中需要fix或者feature已经release分支的如何进行如果在已经交付给用户的镜像中存在漏洞需要批量交付如何进行为了解决这些问题我们的团队必须重新构建镜像并且找出基本镜像构建过程有那些依赖关系。然后基于这些成熟的流程和规范进行快速交付。 解决方案 Docker build是大家比较常用的镜像构建方法并且在构建中只需要声明自己的Dockerfile即可就可以实现快速构建。但是这并不满足大型企业实践以及快速交付。 所以需要一套规范且能够直接生产的流程帮助在云原生下进行快速交付。下面我们讲结合行云平台进行“OneBuild”方法的实践。 悬衡而知乎没规而知圆。因此我们在团队的流水线建立和改造的过程中尤其注重标准化。 包括dockerfile的命名和设计构建代码的设计。由此新项目加入时我们只需复制然后做小工作量的改造即可。 行云Build 行云是JDT生产效率的标准化产品是一个比较成熟的产品。用于支撑内部研发测试交付的平台。 Build是行云中一个子系统用于研发过程中的持续集成持续测试持续构建等任务。 团队日常开发语言主要是以golang为主并且在上线或交付制品中也以Docker镜像为主。并且由于大多数时间我们必须在真实的K8S环境中运行。 所以稳定的构建平台高效快速的构建对我们的日常开发和交付都是至关重要在构建中往往需要构建多版本镜像。所以围绕行云流水线主要就是发掘功能适配改造。 Dockerfile标准化 接下来我们设计的流程将会使用上一级构建的产品对下级镜像进行快速装箱。 Dockerfile命名 Dockerfile # 标准版Dockerfile.kylinv10 # kylinv10 base 版本Dockerfile.oel22 # openeuler base 版本 下面我们继续看dockerfile中的细节。 首先是 Dockerfile ARG ARCHARG BUILD_IMAGEARG BASE_IMAGEFROM ${BUILD_IMAGE} as builderARG ARCHENV GOPATH/goCOPY go.mod go.modCOPY go.sum go.sumCOPY main.go main.goCOPY api/ api/COPY controllers/ controllers/COPY pkg/ pkg/COPY vendor/ vendor/# BuildRUN CGO_ENABLED0 GO111MODULEon GOOSlinux GOARCH${ARCH} go build --modvendor -a -o manager main.goARG ARCHARG BASE_IMAGEFROM ${BASE_IMAGE}ENV PIP3_SOURCEhttps://pypi.tuna.tsinghua.edu.cn/simpleENV DEFAULT_FORKS50ENV DEFAULT_TIMEOUT600ENV DEFAULT_GATHER_TIMEOUT600ENV TZAsia/ShanghaiENV PYTHONWARNINGSignore::UserWarningWORKDIR /COPY --frombuilder /manager .COPY inventory/ inventory/COPY roles/ roles/COPY etcd-restore.yml etcd-restore.ymlCOPY facts.yml facts.ymlCOPY requirements.txt requirements.txtCOPY inventory.tmpl.ini inventory.tmpl.iniCOPY ansible.cfg ansible.cfgRUN yum -y install kde-l10n-Chinese \yum -y reinstall glibc-common \localedef -c -f UTF-8 -i zh_CN zh_CN.UFT-8 \echo LANGzh_CN.UTF-8 /etc/locale.conf \source /etc/locale.conf \yum clean allENV LANGzh_CN.UTF-8ENV LC_ALLzh_CN.UTF-8RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \echo $TZ /etc/timezone \yum install python3 python3-devel sshpass openssh-clients -y \yum clean all \/usr/bin/python3 -m pip --no-cache-dir install pip21.3.1 -U -i $PIP3_SOURCE \/usr/bin/python3 -m pip --no-cache-dir install -r requirements.txt -i $PIP3_SOURCEUSER rootENTRYPOINT [/manager] 上述dockerfile中分为两个阶段构建第一个阶段builder构建出需要的二进制。这与正常的dockerfile相同。 唯一不同的是我们讲构建镜像和base镜像进行了参数化这也使得当变更构建镜像和base镜像我们只需要在构建时控制参数即可。 再看dockerfile.kylinv10 ARG BASE_IMAGEFROM ${BASE_IMAGE}ENV PIP3_SOURCEhttps://pypi.tuna.tsinghua.edu.cn/simpleENV DEFAULT_FORKS50ENV LANGen_US.UTF-8ENV DEFAULT_TIMEOUT600ENV DEFAULT_GATHER_TIMEOUT600ENV TZAsia/ShanghaiENV PYTHONWARNINGSignore::UserWarningWORKDIR /COPY --fromjdos-etcd-restore-helper:latest /manager /COPY inventory/ inventory/COPY roles/ roles/COPY etcd-restore.yml etcd-restore.ymlCOPY facts.yml facts.ymlCOPY requirements.txt requirements.txtCOPY inventory.tmpl.ini inventory.tmpl.iniCOPY ansible.cfg ansible.cfgRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \echo $TZ /etc/timezone \yum install python3 python3-devel python3-pip sshpass openssh-clients -y \/usr/bin/python3 -m pip --no-cache-dir install pip21.3.1 -U -i $PIP3_SOURCE \/usr/bin/python3 -m pip --no-cache-dir install -r requirements.txt -i $PIP3_SOURCEUSER rootENTRYPOINT [/manager] 发现了什么在dockerfile.kylinv10中少了builder这一步COPY --fromjdos-etcd-restore-helper:latest 是从一个指定的临时镜像中直接做了拷贝。这就直接复用了第一步dockerfile中构建出的产物。效率提升比较明显。 在dockerfile设计中COPY是可以从一个指定的镜像中copy指定的文件的。 再看Dockerfile.oel22 ARG BASE_IMAGEFROM ${BASE_IMAGE}ENV PIP3_SOURCEhttps://pypi.tuna.tsinghua.edu.cn/simpleENV DEFAULT_FORKS50ENV LANGen_US.UTF-8ENV DEFAULT_TIMEOUT600ENV DEFAULT_GATHER_TIMEOUT600ENV TZAsia/ShanghaiENV PYTHONWARNINGSignore::UserWarningWORKDIR /COPY --fromjdos-etcd-restore-helper:latest /manager /COPY inventory/ inventory/COPY roles/ roles/COPY etcd-restore.yml etcd-restore.ymlCOPY facts.yml facts.ymlCOPY requirements.txt requirements.txtCOPY inventory.tmpl.ini inventory.tmpl.iniCOPY ansible.cfg ansible.cfgRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \echo $TZ /etc/timezone \yum install python3 python3-devel python3-pip sshpass openssh-clients -y \/usr/bin/python3 -m pip --no-cache-dir install pip21.3.1 -U -i $PIP3_SOURCE \/usr/bin/python3 -m pip --no-cache-dir install -r requirements.txt -i $PIP3_SOURCEUSER rootENTRYPOINT [/manager] 是不是与dockerfile.kylinv10的思路非常相似事实上这两个文件已经可以合并了内部为了向后兼容没有合并这两个文件。 脚本标准化 还需要在行云流水线中将shell脚本进行固化与dockerfile进行配合。 # 支持shell语言代码的多行输入cd /sudo docker login -u $IMAGE_REPO_USER -p $IMAGE_REPO_PASSWD $(echo $IMAGE_REPO | awk -F / {print $1})git_commit${output.Download_Code.GIT_LAST_COMMIT_SHA1}build_date$(date -u %Y-%m-%dT%H:%M:%SZ)image_tag${env.GenerateNewVersion}-${git_commit:0:6}echo start build image - standardnew_image_repo${IMAGE_REPO}sudo docker build -t ${new_image_repo}:${image_tag} -f Dockerfile --build-arg ARCHamd64 . sudo docker login -u $IMAGE_REPO_USER -p $IMAGE_REPO_PASSWD $(echo $IMAGE_REPO | awk -F / {print $1})sudo docker push ${new_image_repo}:${image_tag}echo end to build image - standardecho amd64ImageName${new_image_repo}:${image_tag} ./amd64_output# 重新命名一个新镜像供下级dockerfile进行多阶段构建时直接copysudo docker tag ${new_image_repo}:${image_tag} jdos-etcd-restore-helper:latest# 条件性选择构建基于kylinv10OS的镜像if [[ -f Dockerfile.kylinv10 ]];thenecho start build image - security - kylin basenew_image_repo${IMAGE_REPO}-kylinv10-amd64sudo docker build -t ${new_image_repo}:${image_tag} -f Dockerfile.kylinv10 --build-arg ARCHamd64 . sudo docker login -u $IMAGE_REPO_USER -p $IMAGE_REPO_PASSWD $(echo $IMAGE_REPO | awk -F / {print $1})sudo docker push ${new_image_repo}:${image_tag}echo end to build image - security - kylin baseecho amd64KylinImageName${new_image_repo}:${image_tag} ./amd64_outputfi# 条件性选择构建基于欧拉OS的镜像if [[ -f Dockerfile.oel22 ]];thenecho start build image - security - openeuler22 basenew_image_repo${IMAGE_REPO}-openeuler22-amd64sudo docker build -t ${new_image_repo}:${image_tag} -f Dockerfile.oel22 --build-arg ARCHamd64 . sudo docker login -u $IMAGE_REPO_USER -p $IMAGE_REPO_PASSWD $(echo $IMAGE_REPO | awk -F / {print $1})sudo docker push ${new_image_repo}:${image_tag}echo end to build image - security - openeuler22 baseecho amd64Oel22ImageName${new_image_repo}:${image_tag} ./amd64_outputfi# 清理builder镜像避免产生none垃圾镜像。sudo docker rmi jdos-etcd-restore-helper:latest --force 提升 基于以上构建时间从21min缩短至7min构建效率提升66%。我们总结出“OneBuild”方法即构建一次多处使用的思路。 标准化的shell与dockerfile进行配合能够做到一次构建多处使用。提升了构建效率。 讨论 上述完整介绍了多个镜像构建的流程和设计规范也说明“OneBuild”可以进行快速构建的优点。所以OneBuild的对于中大型组织或者有快速交付需求的团队来讲是非常有帮助的。 并且对效率的提升是可以看得见的。 作者京东科技 王晓飞 来源京东云开发者社区 转载请注明来源
http://www.dnsts.com.cn/news/98632.html

相关文章:

  • 企业静态网站源码一个网站一年的费用
  • 单品电商网站建设遵义网站制作如何收费
  • 文山知名网站建设网站 设计公司 温州
  • 丰台网站开发公司11网拍推广平台
  • 中国商标网商标查询官方网站拼多多电商运营模式
  • 南昌网站设计有限公司网站开发用哪个软件方便
  • 怎样做地方门户网站南昌网站建设工作
  • 东莞模块网站建设wordpress软件门户主题
  • 做防伪查询网站怎么建设电子商城网站
  • 西山区城市建设局网站山西中色十二冶金建设有限公司网站
  • 网站备案 查询上海到北京高铁几小时
  • 企业网站的完整性包括哪些wordpress邮件 插件
  • 多语种外贸网站建设网络营销策略分析报告
  • 拐个娇妻做晚餐在哪个网站连载呢注册公司流程步骤
  • 什么网站做任务可以赚钱广告设计专业哪个大学最好
  • 做系统网站建设SEO案例网站建设公司
  • 什么网站可以做宣传自己建设一个平台网站多少钱
  • 郑州专业网站制作建设seo公司官网
  • 做网站 兼职百度信息
  • 简约风格的网站网站开发商城
  • 网站暂停怎么做商城网站建设第一章
  • 合肥企业做网站2023年网络推广方法
  • 公司网站免费申请广元市建设局网站
  • 用哪个网站做首页好wordpress页面结构
  • 合肥企业网站制作公司网站开发项目需要什么人员
  • 佛冈县住房和城乡建设局网站库车县建设网站
  • 网站开发和室内制作电器工程东莞网站建设
  • 网站分销系统ui网页设计师
  • 做外国网站软件开发模型对比
  • 经营一个网站要怎么做套模板网站价格表