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

建立网站怎么赚钱wordpress自定义弹窗

建立网站怎么赚钱,wordpress自定义弹窗,页面模板在公号什么地方显示,营销型网站建设核心要素作者 | Addo Zhang来源 | 云原生指北过去的工作中#xff0c;我们使用微服务、容器化以及服务编排构建了技术平台。为了提升开发团队的研发效率#xff0c;我们同时还提供了 CICD 平台#xff0c;用来将代码快速的部署到 Openshift#xff08;企业级的 Kubernetes#xff… 作者 | Addo Zhang来源 | 云原生指北过去的工作中我们使用微服务、容器化以及服务编排构建了技术平台。为了提升开发团队的研发效率我们同时还提供了 CICD 平台用来将代码快速的部署到 Openshift企业级的 Kubernetes 集群。部署的第一步就是应用程序的容器化持续集成的交付物从以往的 jar 包、webpack 等变成了容器镜像。容器化将软件代码和所需的所有组件库、框架、运行环境打包到一起进而可以在任何环境任何基础架构上一致地运行并与其他应用“隔离”。我们的代码需要从源码到编译到最终可运行的镜像甚至部署这一切在 CICD 的流水线中完成。最初我们在每个代码仓库中都加入了三个文件也通过项目生成器类似 Spring Initializer在新项目中注入•Jenkinsfile.groovy用来定义 Jenkins 的 Pipeline针对不同的语言还会有多种版本•Manifest YAML用于定义 Kubernetes 资源也就是工作负载及其运行的相关描述•Dockerfile用于构建对象这个三个文件也需要在工作中不断的演进起初项目较少十几个的时候我们基础团队还可以去各个代码仓库去维护升级。随着项目爆发式的增长维护的成本越来越高。我们对 CICD 平台进行了迭代将“Jenkinsfile.groovy”和 “manifest YAML”从项目中移出变更较少的 Dockerfile 就保留了下来。随着平台的演进我们需要考虑将这唯一的“钉子户” Dockerfile 与代码解耦必要的时候也需要对 Dockerfile 进行升级。因此调研了一下 buildpacks就有了今天的这篇文章。什么是 DockerfileDocker 通过读取 Dockerfile 中的说明自动构建镜像。Dockerfile 是一个文本文件包含了由 Docker 可以执行用于构建镜像的指令。我们拿之前用于测试 Tekton 的 Java 项目[1]的 Dockerfile 为例FROM openjdk:8-jdk-alpine RUN mkdir /app WORKDIR /app COPY target/*.jar /app/app.jar ENTRYPOINT [sh,-c,java -Xmx128m -Xms64m -jar app.jar]镜像分层你可能会听过 Docker 镜像包含了多个层。每个层与 Dockerfile 中的每个命令对应比如 RUN、COPY、ADD。某些特定的指令会创建一个新的层在镜像构建过程中假如某些层没有发生变化就会从缓存中获取。在下面的 Buildpack 中也同样通过镜像分层和 cache 来加速镜像的构建。什么是 BuildpackBuildPack[2] 是一个程序它能将源代码转换成容器镜像的并可以在任意云环境中运行。通常 buildpack 封装了单一语言的生态工具链。适用于 Java、Ruby、Go、NodeJs、Python 等。buildpacks.ioBuilder 是什么一些 buildpacks 按顺序组合之后就是 builder除了 buildpacks builder 中还加入了 生命周期[3] 和 stack 容器镜像。stack 容器镜像由两个镜像组成用于运行 buildpack 的镜像 build image以及构建应用镜像的基础镜像 run image。如上图就是 builder 中的运行环境。Buildpack 的工作方式how buildpack works每个 buildpack 运行时都包含了两个阶段phases1. 检测阶段通过检查源代码中的某些特定文件/数据来判断当前 buildpack 是否适用。如果适用就会进入构建阶段否则就会退出。比如•Java maven 的 buildpack 会检查源码中是否有 pom.xml•Python 的 buildpack 会检查源码中是否有 requirements.txt 或者 setup.py 文件•Node buildpack 会查找 package-lock.json 文件。2. 构建阶段在构建阶段会进行如下操作1.设置构建环境和运行时环境2.下载依赖并编译源码假如需要的话3.设置正确的 entrypoint 和启动脚本。比如•Java maven buildpack 在检查到有 pom.xml 文件之后会执行 mvn clean install -DskipTests•Python buildpack 检查到有 requrements.txt 之后会执行 pip install -r requrements.txt•Node build pack 检查到有 package-lock.json 后执行 npm installBuildPack 上手那到底如何在没有 Dockerfile 的情况下使用 builderpack 构建镜像的。看了上面这些大家基本上也都能了解到这个核心就在 buildpack 的编写和使用的。其实现在有很多开源的 buildpack 可以用没有特定定制的情况下无需自己手动编写。比如下面的几个大厂开源并维护的 Buildpacks•Heroku Buildpacks[4]•Google Buildpacks[5]•Paketo[6]但是正式详细介绍开源的 buildpacks 之前我们还是通过自己创建 buildpack 的方式来深入了解 Buildpacks 的工作方式。测试项目呢我们还是用测试 Tekton 的 Java 项目[7]。下面所有的内容都提交到了 Github[8] 上可以访问https://github.com/addozhang/buildpacks-sample 获取相关代码。最终的目录buildpacks-sample结构如下├── builders │   └── builder.toml ├── buildpacks │   └── buildpack-maven │   ├── bin │   │   ├── build │   │   └── detect │   └── buildpack.toml └── stacks ├── build │   └──Dockerfile ├── build.sh └── run └──Dockerfile创建 buildpackpack buildpack new examples/maven \ --api 0.5 \ --path buildpack-maven \ --version 0.0.1 \ --stacks io.buildpacks.samples.stacks.bionic看下生成的 buildpack-maven 目录buildpack-maven ├── bin │   ├── build │   └── detect └── buildpack.toml各个文件中都是默认的初试数据并没有什么用处。需要添加些内容bin/detect#!/usr/bin/env bash if[[!-f pom.xml ]];then exit100 fi plan_path$2 cat ${plan_path}EOL [[provides]] name jdk [[requires]] name jdk EOLbin/build#!/usr/bin/env bash set-euo pipefail layers_dir$1 env_dir$2/env plan_path$3 m2_layer_dir${layers_dir}/maven_m2 if[[!-d ${m2_layer_dir}]];thenmkdir -p ${m2_layer_dir}echo cache true ${m2_layer_dir}.toml fi ln -s ${m2_layer_dir} $HOME/.m2 echo --- Running Maven mvn clean install -B -DskipTests target_dirtarget for jar_file in $(find $target_dir-maxdepth 1-name *.jar-type f);docat ${layers_dir}/launch.tomlEOL [[processes]] type web command java -jar ${jar_file} EOL break; donebuildpack.tomlapi 0.5 [buildpack]id examples/mavenversion 0.0.1 [[stacks]]id com.atbug.buildpacks.example.stacks.maven创建 stack构建 Maven 项目首选需要 Java 和 Maven 的环境我们使用 maven:3.5.4-jdk-8-slim 作为 build image 的 base 镜像。应用的运行时需要 Java 环境即可因此使用 openjdk:8-jdk-slim作为 run image 的 base 镜像。在 stacks 目录中分别创建 build 和 run 两个目录build/DockerfileFROM maven:3.5.4-jdk-8-slim ARG cnb_uid1000 ARG cnb_gid1000 ARG stack_id ENV CNB_STACK_ID${stack_id} LABEL io.buildpacks.stack.id${stack_id} ENV CNB_USER_ID${cnb_uid} ENV CNB_GROUP_ID${cnb_gid} # Install packages that we want to make available at both build and run time RUN apt-get update \apt-get install -y xz-utils ca-certificates \rm -rf /var/lib/apt/lists/* # Create user and group RUN groupadd cnb --gid ${cnb_gid} \useradd --uid ${cnb_uid}--gid ${cnb_gid}-m -s /bin/bash cnb USER ${CNB_USER_ID}:${CNB_GROUP_ID}run/DockerfileFROM openjdk:8-jdk-slim ARG stack_id ARG cnb_uid1000 ARG cnb_gid1000 LABEL io.buildpacks.stack.id${stack_id} USER ${cnb_uid}:${cnb_gid}然后使用如下命令构建出两个镜像export STACK_IDcom.atbug.buildpacks.example.stacks.maven docker build --build-arg stack_id${STACK_ID}-t addozhang/samples-buildpacks-stack-build:latest ./build docker build --build-arg stack_id${STACK_ID}-t addozhang/samples-buildpacks-stack-run:latest ./run创建 Builder有了 buildpack 和 stack 之后就是创建 Builder 了首先创建 builder.toml 文件并添加如下内容[[buildpacks]] id examples/maven version 0.0.1 uri ../buildpacks/buildpack-maven [[order]] [[order.group]] id examples/maven version 0.0.1 [stack] id com.atbug.buildpacks.example.stacks.maven run-image addozhang/samples-buildpacks-stack-run:latest build-image addozhang/samples-buildpacks-stack-build:latest然后执行命令注意这里我们使用了 --pull-policy if-not-present 参数就不需要将 stack 的两个镜像推送到镜像仓库了pack builder create example-builder:latest --config ./builder.toml --pull-policy if-not-present测试有了 builder 之后我们就可以使用创建好的 builder 来构建镜像了。这里同样加上了 --pull-policy if-not-present 参数来使用本地的 builder 镜像# 目录 buildpacks-sample 与 tekton-test 同级并在 buildpacks-sample 中执行如下命令 pack build addozhang/tekton-test --builder example-builder:latest --pull-policy if-not-present --path ../tekton-test如果看到类似如下内容就说明镜像构建成功了第一次构建镜像由于需要下载 maven 依赖耗时可能会比较久后续就会很快可以执行两次验证下...EXPORTING [exporter]Adding1/1 app layer(s) [exporter]Reusing layer launcher [exporter]Reusing layer config [exporter]Reusing layer process-types [exporter]Adding label io.buildpacks.lifecycle.metadata [exporter]Adding label io.buildpacks.build.metadata [exporter]Adding label io.buildpacks.project.metadata [exporter]Settingdefault process type web [exporter]Saving addozhang/tekton-test... [exporter]***Images(0d5ac1158bc0): [exporter] addozhang/tekton-test [exporter]Adding cache layer examples/maven:maven_m2 Successfully built image addozhang/tekton-test启动容器会看到 spring boot 应用正常启动docker run --rm addozhang/tekton-test:latest . ____ _ __ _ _ /\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \ (()\___ |_ | _||_ \/ _| \ \ \ \\\/ ___)||_)|||||||(_||))))|____| .__|_| |_|_| |_\__, | / / / / |_||___//_/_/_/ ::SpringBoot::(v2.2.3.RELEASE) ...总结其实现在有很多开源的 buildpack 可以用没有特定定制的情况下无需自己手动编写。比如下面的几个大厂开源并维护的 Buildpacks•Heroku Buildpacks[9]•Google Buildpacks[10]•Paketo[11]上面几个 buildpacks 库内容比较全面实现上会有些许不同。比如 Heroku 的执行阶段使用 Shell 脚本而 Paketo 使用 Golang。后者的扩展性较强由 Cloud Foundry 基金会支持并拥有由 VMware 赞助的全职核心开发团队。这些小型模块化的 buildpack可以通过组合扩展使用不同的场景。当然还是那句话自己上手写一个会更容易理解 Buildpack 的工作方式。引用链接[1] 测试 Tekton 的 Java 项目: https://github.com/addozhang/tekton-test[2] BuildPack: https://buildpacks.io/[3] 生命周期: https://buildpacks.io/docs/concepts/components/lifecycle/[4] Heroku Buildpacks: https://github.com/heroku/[5] Google Buildpacks: https://github.com/GoogleCloudPlatform/buildpacks[6] Paketo: https://github.com/paketo-buildpacks[7] 测试 Tekton 的 Java 项目: https://github.com/addozhang/tekton-test[8] Github: https://github.com/addozhang/buildpacks-sample[9] Heroku Buildpacks: https://github.com/heroku/[10] Google Buildpacks: https://github.com/GoogleCloudPlatform/buildpacks[11] Paketo: https://github.com/paketo-buildpacks往期推荐云计算到底是谁发明的从Docker的信号机制看容器的优雅停止Redis会遇到的坑你踩过几个内容整理志愿者招募了点分享点收藏点点赞点在看
http://www.zqtcl.cn/news/259516/

相关文章:

  • 唐山房产网站建设asp.net 网站压缩
  • 卫浴网站设计大型网站建设的必须条件
  • 肇庆制作企业网站seo网站建设课程
  • 没有公司自己做网站wordpress lms插件
  • 申请一个网站需要怎么做北京网络公司信息
  • 珠海市建设局网站分销系统价格多少
  • 杭州建网站企业seo营销工具
  • php旅游类网站开发wordpress 文章内
  • 企业管理外贸企业网站优化
  • 免费图纸网东莞百度快照优化排名
  • 南宁网站建设培训学校青海网站建设加q5299丶14602做词
  • 鱼台做网站多少钱wordpress pot
  • 招聘网站建设维护人员怎样自己开发一款软件
  • 上海网站制作怎么选泰安网红人物
  • 企业网站建设义乌南靖网站建设
  • 抖音电商网站建设如何制作app推广
  • 关键词的选择网站提示网站建设电销异议处理话术
  • 南京建设网站内容网站打开速度慢是否需要升级带宽
  • 内容类网站如何 流量厦门市建设局网站住房保障专栏
  • 朝城做网站公司网站内容建设要求age06
  • 云南省城乡建设培训中心网站备份wordpress网站
  • 快速建站公司地址vr哪家公司做得好
  • 网站空间怎么更换网站营销如何做
  • 制作单页网站要网址wordpress更新显示失败
  • 阿里巴巴网站建设公司设计网站制作
  • 泰安网站建设有哪些常见的cms网站程序有哪些
  • 九寨沟城乡建设官方网站深圳的互联网公司排名
  • app可视化开发工具seo网站推广服务
  • 临近做网站网络营销方式哪些?
  • 网站数据分析案例怎样在网上做广告