Jenkins~配合Docker及dotnetCore进行生产和测试环境的灵活部署-阿里云开发者社区

开发者社区> 开发与运维> 正文

Jenkins~配合Docker及dotnetCore进行生产和测试环境的灵活部署

简介:

首先要清楚本文是讲dotnetcore项目在生产和测试环境部署的,这在过去的frameworks项目里,我们可以通过设置web.config的环境变量,然后再发布时指定具体的变量,去实现生产环境和测试环境的发布,发布之后,每个环境有自己的配置文件,frameworks会更新环境把web.config进行合并,而在dotnetcore项目里,这种方法不适用了,所以需要在这里再总结一下了。

环境说明

  1. jenkins自动部署
  2. docker,docker-swarm集群
  3. dotnet core api项目

要实现功能

  1. 将调试,测试,生产等环境的配置信息提前配置好,不需要上线后在去修改它,实现自动化发布和部署
  2. dotnet core项目配置自己的appsettings.development.json和appsettings.production.json文件
  3. 运行容器前需要设置环境变量,dockerfile打到镜像也行,docker service启动时加载也可以

实现部署

jenkins调用sh脚本添加环境参数
#!/bin/sh
set -xe
cd ${WORKSPACE}/deploy/
/bin/bash publish.sh
/bin/bash build.sh "Production"
build.sh脚本添加了描述环境的输入参数
#!/bin/sh
set -ex
export IMAGE_NAME=svt/sms
export Registry_Url="ciregistry.i-counting.cn:8443"
#输入参数source,目前支持Development外测和Production生产环境两个值
docker build --no-cache --pull -t $IMAGE_NAME --build-arg source=$1 ./
docker tag $IMAGE_NAME $Registry_Url/$IMAGE_NAME
docker push $Registry_Url/$IMAGE_NAME
Dockerfile里添加了设置环境变量的代码
FROM microsoft/aspnetcore:2.0
ARG source
run echo $source
COPY sources.list /etc/apt/sources.list
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN apt-get update && apt-get -y install libgdiplus && apt-get clean
ENV ASPNETCORE_ENVIRONMENT=$source
WORKDIR /app
EXPOSE 80
COPY obj/Docker/publish .
ENTRYPOINT ["dotnet", "Validate.dll"]
aspnetcore的项目里添加了Development和Production两种配置的appsettings.json
最后就是代码获取配置时,一定要加上环境参数
config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
  .AddJsonFile(file, optional: true, reloadOnChange: true)
  .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
  .Build();

好了,今天咱们主要实现的是比较实用的按环境去部署项目的方法!

希望本文章对各位有所帮助!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:Jenkins~配合Docker及dotnetCore进行生产和测试环境的灵活部署,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章