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

网站结构有哪些类型金堂网站建设

网站结构有哪些类型,金堂网站建设,贵阳优化网站建设,网站开发可退税前言 随着Go语言的普及#xff0c;越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署#xff08;CI/CD#xff09;工具#xff0c;用于自动化构建、测试和部署Go程序包#xff0c;但存在一些部署在ECS服务器的Go程序包或需要手动编译…前言 随着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.hkea.cn/news/14514292/

相关文章:

  • python做的网站哪些做网站的技术性说明
  • 广州网站设计制作一般纳税人利润300万要交多少税
  • 广州 天河网站设计wordpress标题分隔符
  • 汉中网站建设费用公众号seo排名软件
  • 郑州做网站狼牙广西响应式网站建设
  • 刷leetcode对网站开发有用吗做网站后期为什么续费
  • 深圳工信部网站岳阳找工作网站
  • 如何关闭网站合肥建站网站平台
  • 规范网站建设情况的报告wordpress主题更换字体教程 | hu
  • 如何通过ftp上传网站网站好玩代码和特效
  • 网站开发验证码功能黄骅市天气预报
  • 网站分享链接怎么做win安装wordpress
  • 台州工程建设信息网站多导航织梦网站模板下载
  • 网络营销的推广工具seo优化神器
  • 温州做网站最好的桂电做网站的毕设容易过嘛
  • 集宁网站建设SEO优化怎么做国际网站
  • 关于怎么做网站网站技术开发设计
  • 金华建设网站的公司北京画册设计公司
  • 中企做一个网站多少钱兰州做网站es5188
  • 珠海网站制作网络公司WordPress插件ckplayer
  • 个人网站设计文字内容模板做网站主页上主要放哪些内容
  • 建网站需要多少费用做网站 赚钱
  • 银川网站建设哪家好亚马逊跨境电商好做吗
  • 住房和城乡建设部官方网站已网站开发需要什么软件有哪些
  • 建设网站创业网站改版要重新备案吗
  • 华为做网站吗app网站搭建
  • 建设工程消防验收网站优秀企业网站模板
  • 自己切片做网站网站建设百度云资源
  • 寻找做网站的合作伙伴北京谷歌浏览器安卓版下载
  • 常州网络公司中环互联网网站建设seo 0xu