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

页面简单的网站电商网站设计欣赏

页面简单的网站,电商网站设计欣赏,网站标题特效,长春网站建设平台概要 本文将介绍如何使用 Shell 脚本打包来优雅地生成Go的程序包。我们将创建一个简单的脚本#xff0c;用于构建、测试和部署 Golang 项目。 前言 随着Go语言的普及#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署…概要 本文将介绍如何使用 Shell 脚本打包来优雅地生成Go的程序包。我们将创建一个简单的脚本用于构建、测试和部署 Golang 项目。 前言 随着Go语言的普及越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署CI/CD工具用于自动化构建、测试和部署Go程序包但存在一些部署在ECS服务器的Go程序包或需要手动编译打包上传镜像仓库的镜像。然而手动创建和管理这些程序包可能会变得相当繁琐。因此为了提高开发效率使用Shell脚本来自动化这个过程是一个不错的选择。 Shell脚本 针对上述说到的两种情况一个是部署在ECS上Go服务程序包、另一个是手动部署K8s上的Go服务镜像包下面分别给出代码。 一键生成Go程序包 本人使用Window系统开发使用Go的gracehttp实现服务平滑重启但Window对信号量处理存在问题导致在Window环境下生成的Go程序包无法平滑重启所以这里使用alpine将项目编译生成程序包到本地项目目录中完美解决该问题。 deploy.sh #!/bin/bash# 定义环境变量 environments(test prod) imagego-demo# 函数显示绿色成功信息 function success {echo -e \033[1;32m$1\033[0m }# 函数显示绿色成功信息 function info {echo -e \033[33m$1\033[0m }# 函数显示红色错误信息并退出 function error {echo -e \033[1;31m$1\033[0mexit 1 }info Please select the packaging environment:(Select number) select env in ${environments[]}; doif [ $env test ]; thenport80success The packaging environment you entered is: $envbreakelif [ $env prod ]; thenport8080success The packaging environment you entered is: $envbreakelseerror Invalid environment selection, please re-enterexit 1fi doneinfo \nbuild start:info \n1) docker build running... docker build --build-arg PORT$port -t $image:$env -f deploy/docker/Dockerfile . /dev/nullinfo \n2) docker running... docker run -itd --name $image-$env $image:$env /dev/nullinfo \n3) docker cp package... docker cp $image-$env:/app/main_$port ./info \n4) delete containers... docker ps -a | grep $image-$env* | awk {print $1} | xargs docker rm -f /dev/nullinfo \n5) remove images... docker rmi -f $(docker images $image:$env* -q | sort | uniq) /dev/nullinfo \nbuild done!exit 0 Dockerfile FROM golang:1.17.6-alpineLABEL maintainerxxxxxx.com# 文件名称 ARG PORT# 设置工作目录 ENV WORKDIR /app# 关闭CGO ENV CGO_ENABLED 0# 设置GOOS和GOARCH ENV GOOS linux ENV GOARCH amd64 ENV GOPROXY https://goproxy.cn,direct# 声明工作目录 WORKDIR $WORKDIR# 拷贝整个项目到工作目录 COPY . .# 项目依赖包 RUN go mod download# 项目编译 RUN go build -ldflags-s -w -o $WORKDIR/main_$PORT ./main.go# 运行300s # CMD [sleep, 300] 执行结果 一键生成Go镜像包 现在我们很多项目部署在K8s上所以将程序编译打包成进行镜像其中需要将代码打包成程序包而且需要将程序包上传到仓库供k8s下载使用通过编写Xshell程序可以大大提高效率。 deploy.sh #!/bin/bash# 仓库域名 WAREHOUSE_DOMAINharbor.xxx.com # 镜像路径 MIRROR_PATHNAMExxx/login# 函数显示绿色成功信息 function success {echo -e \033[1;32m$1\033[0m }# 函数显示绿色成功信息 function info {echo -e \033[33m$1\033[0m }read -p Please enter the packaging version: version success The packaging version you entered is: $version\ninfo build start:\ninfo 1) docker build...\n docker build -f ./deploy/docker/Dockerfile -t $MIRROR_PATHNAME:$version . /dev/nullinfo 2) docker tag...\n docker tag $MIRROR_PATHNAME:$version $WAREHOUSE_DOMAIN/$MIRROR_PATHNAME:$version /dev/nullinfo 3) docker push...\n docker push $WAREHOUSE_DOMAIN/$MIRROR_PATHNAME:$version /dev/nullinfo 4) delete containers...\n docker ps -a | grep $WAREHOUSE_DOMAIN/$MIRROR_PATHNAME* | awk {print $1} | xargs docker rm -f /dev/nullinfo 5) remove images...\n docker rmi -f $(docker images $WAREHOUSE_DOMAIN/$MIRROR_PATHNAME* -q | sort | uniq) /dev/nullinfo build done!exit Dockfile # 第一阶段构建应用程序 FROM golang:1.17.6-alpine AS builder # 设置维护者信息 LABEL maintainerxxxxxx.com # 设置工作目录 ENV WORKDIR /app # 关闭CGO以减少构建过程中的依赖和体积 ENV CGO_ENABLED 0 # 设置目标操作系统和架构 ENV GOOS linux ENV GOARCH amd64 ENV GOPROXY https://goproxy.cn,direct # 切换到工作目录 WORKDIR $WORKDIR # 拷贝当前目录下的所有文件到工作目录 COPY . . # 下载项目依赖包 RUN go mod download # 查看工作目录中的文件列表可以用来检查文件是否正确拷贝 RUN ls -al # 编译项目-ldflags参数用于优化生成的二进制文件大小和性能 RUN go build -ldflags-s -w -o $WORKDIR/main ./main.go # 第二阶段构建Docker镜像 FROM loads/alpine:3.8# 设置维护者信息 LABEL maintainerxxxxxx.com # 设置工作目录和时区 ENV WORKDIR /app ENV TZ Asia/Shanghai # 将第一阶段构建的应用程序复制到当前镜像的工作目录 COPY --frombuilder /app/main $WORKDIR/main RUN chmod x $WORKDIR/main# 切换到工作目录 WORKDIR $WORKDIR # 设置容器启动时的命令为应用程序的可执行文件路径 CMD [./main] 执行结果 结语 通过编写Shell脚本我们可以大大简化Golang项目的打包和部署流程提升工作效率。当然实际生产环境中可能还需要考虑更多因素如版本管理、依赖处理、日志收集等但以上步骤已经构成了一个基础的自动化部署框架。随着需求的增加你可以在这个基础上不断扩展和完善你的部署脚本使其更加符合你的业务需求。
http://www.pierceye.com/news/324758/

相关文章:

  • 南宁手机建站公司新加坡网站后缀
  • 如何在建设部网站查询获奖情况如何申请电商网站
  • jsp网站访问万维网网站幻灯
  • 南通住房和城乡建设部网站首页安徽公司网站建设
  • 建筑论坛网站修改WordPress文章发布页面
  • 网站代备案系统seo优化服务是什么意思
  • 专门做选择题的网站一个网站seo做哪些工作
  • wordpress 多站点 拷贝中国建设银行春招网站
  • 门户营销型网站wordpress代码执行
  • 保山市建设厅网站做建筑机械网站那个网站好
  • 广告位网站建设国际人才网中山招聘网
  • 南昌市城市建设档案馆网站一个网站做无限关键词
  • wordpress特别卡 iis东莞推广优化公司
  • 做网站收入怎样开放平台登录
  • 外贸网站运营推广微信运营商
  • 国外做储物柜的网站做亚马逊网站一般发什么快递
  • 仿古建筑公司网站廊坊网站建设公司
  • 在线动画手机网站模板下载学软件开发需要什么基础
  • 北京的网站建设收费标准推广产品的方法和步骤
  • 北京市专业网站制作企业合肥做网络推广的公司
  • 网站建设php教程视频手机商城网站设计
  • 重庆网站建设公司哪个最好老家装设计网
  • 外贸网站建设产品crm公司
  • 网站做查赚钱网站建设捌金手指花总四
  • 有没有做链接的网站彩票型网站建设
  • 15年做哪个网站能致富网站界面设计的相关指南
  • 网站报价功能清单德州做网站最好的公司
  • 网站开发设计图片搭建论坛需要多少钱
  • 网站建设价格明细做一套二级域名网站怎么做
  • 网站建设 发展方向手机开发人员选项怎么打开