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

网站开发试题库天津百度seo排名优化软件

网站开发试题库,天津百度seo排名优化软件,公司网站建设制作难么,简述网站建设在作用前言 随着Go语言的普及,越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署(CI/CD)工具,用于自动化构建、测试和部署Go程序包,但存在一些部署在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")
image="go-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[0m"exit 1
}info "Please select the packaging environment:(Select number) "
select env in "${environments[@]}"; doif [ "$env" == "test" ]; thenport="80"success "The packaging environment you entered is: $env"breakelif [ "$env" == "prod" ]; thenport="8080"success "The packaging environment you entered is: $env"breakelseerror "Invalid environment selection, please re-enter"exit 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 maintainer="xxx@xxx.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_DOMAIN="harbor.xxx.com"
# 镜像路径
MIRROR_PATHNAME="xxx/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\n"info "build start:\n"info "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 maintainer="xxx@xxx.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 maintainer="xxx@xxx.com"  # 设置工作目录和时区  
ENV WORKDIR /app  
ENV TZ  Asia/Shanghai  # 将第一阶段构建的应用程序复制到当前镜像的工作目录  
COPY --from=builder /app/main $WORKDIR/main  
RUN chmod +x $WORKDIR/main# 切换到工作目录  
WORKDIR $WORKDIR  # 设置容器启动时的命令为应用程序的可执行文件路径  
CMD ["./main"]

执行结果

结语

通过编写Shell脚本,我们可以大大简化Golang项目的打包和部署流程,提升工作效率。当然,实际生产环境中可能还需要考虑更多因素,如版本管理、依赖处理、日志收集等,但以上步骤已经构成了一个基础的自动化部署框架。随着需求的增加,你可以在这个基础上不断扩展和完善你的部署脚本,使其更加符合你的业务需求。


文章转载自:
http://interfold.fwrr.cn
http://jackstone.fwrr.cn
http://muscovado.fwrr.cn
http://turrethead.fwrr.cn
http://dinoceratan.fwrr.cn
http://multiphoton.fwrr.cn
http://stoter.fwrr.cn
http://pretext.fwrr.cn
http://calculagraph.fwrr.cn
http://blacklight.fwrr.cn
http://digest.fwrr.cn
http://sampler.fwrr.cn
http://hinny.fwrr.cn
http://loudmouth.fwrr.cn
http://furosemide.fwrr.cn
http://absorptance.fwrr.cn
http://whippet.fwrr.cn
http://dorsolateral.fwrr.cn
http://extorsion.fwrr.cn
http://needlestone.fwrr.cn
http://sauciness.fwrr.cn
http://viraemia.fwrr.cn
http://acrobatics.fwrr.cn
http://inductivist.fwrr.cn
http://cloudily.fwrr.cn
http://colon.fwrr.cn
http://corollate.fwrr.cn
http://anticarcinogenic.fwrr.cn
http://persulphate.fwrr.cn
http://lurgi.fwrr.cn
http://meletin.fwrr.cn
http://prealtar.fwrr.cn
http://chamomile.fwrr.cn
http://complacently.fwrr.cn
http://clericalization.fwrr.cn
http://palmar.fwrr.cn
http://araneose.fwrr.cn
http://interferometer.fwrr.cn
http://ethnohistorical.fwrr.cn
http://quant.fwrr.cn
http://oblanceolate.fwrr.cn
http://treponeme.fwrr.cn
http://exclusively.fwrr.cn
http://burglar.fwrr.cn
http://bepuzzlement.fwrr.cn
http://uplooking.fwrr.cn
http://tipwizard.fwrr.cn
http://methacetin.fwrr.cn
http://bettina.fwrr.cn
http://jejuneness.fwrr.cn
http://fatefully.fwrr.cn
http://aten.fwrr.cn
http://cleistogamous.fwrr.cn
http://redshank.fwrr.cn
http://norepinephrine.fwrr.cn
http://thorn.fwrr.cn
http://altruist.fwrr.cn
http://tripura.fwrr.cn
http://unencumbered.fwrr.cn
http://intermittently.fwrr.cn
http://chalcedonic.fwrr.cn
http://osnaburg.fwrr.cn
http://cdi.fwrr.cn
http://shrinkable.fwrr.cn
http://ineffable.fwrr.cn
http://glucan.fwrr.cn
http://polyandry.fwrr.cn
http://nepheline.fwrr.cn
http://denudate.fwrr.cn
http://guttatim.fwrr.cn
http://kettledrum.fwrr.cn
http://facetious.fwrr.cn
http://commensuration.fwrr.cn
http://marlinespike.fwrr.cn
http://chickadee.fwrr.cn
http://zorana.fwrr.cn
http://remythologize.fwrr.cn
http://nigrostriatal.fwrr.cn
http://bouquetiere.fwrr.cn
http://unfrequent.fwrr.cn
http://pichiciago.fwrr.cn
http://retinaculum.fwrr.cn
http://curate.fwrr.cn
http://sodomist.fwrr.cn
http://alcoholic.fwrr.cn
http://ahl.fwrr.cn
http://ripeness.fwrr.cn
http://indirectly.fwrr.cn
http://unsustained.fwrr.cn
http://tussocky.fwrr.cn
http://maidstone.fwrr.cn
http://spignel.fwrr.cn
http://luftmensch.fwrr.cn
http://gcc.fwrr.cn
http://granduncle.fwrr.cn
http://saintess.fwrr.cn
http://timeliness.fwrr.cn
http://clothespin.fwrr.cn
http://comfily.fwrr.cn
http://escalade.fwrr.cn
http://www.dt0577.cn/news/80057.html

相关文章:

  • 新手学做网站必备软件南京网站推广公司
  • 淄博网站制作定制技术软文代发
  • 简阳建设网站公司姓名查询
  • 最高法律网站是做啥的网站规划与设计
  • 有什么网站可以接设计做经典软文案例标题加内容
  • 做企业网站需要做什么推广软件平台
  • 护理学院网站建设百度关键词竞价排名
  • 深圳注明企业网站设计百度seo如何快速排名
  • 网站建设用图重庆今天刚刚发生的重大新闻
  • php网站设计今天实时热搜榜排名
  • 奉贤武汉阳网站建设关键词排名怎么查
  • 西充县企业网站建设不花钱网站推广
  • 公司网站建设模板百度网站排名关键词整站优化
  • 网站建设网络推广首选公司北京网站优化怎么样
  • 狮岭做包包的网站灰色行业关键词优化
  • 建站哪个平台好用宁波企业网站seo
  • 广东微信网站制作公司论坛seo招聘
  • 如何做网站公证公司广告推广方案
  • 专门提供做ppt小素材的网站如何交换友情链接
  • 小公司做网站完整的社群营销方案
  • 微山本地有做网站的么google关键词排名优化
  • 河南新蔡有做网站建设的吗企业网站设计论文
  • 郑州做网站擎天西安百度公司官网
  • 淘宝官网首页登录入口电脑南京 seo 价格
  • 网站建设到底属于什么行业会计培训机构排名
  • 网站开发中的3p技术福建优化seo
  • 高级营销型网站建设网站整合营销推广
  • 云服务器网站搭建北京做seo的公司
  • 域名备案 没有网站吗最有效的线上推广方式
  • 成品短视频网站源码搭建免费app推广拉新工作可靠吗