zoukankan      html  css  js  c++  java
  • .Net Core3.1+Jenkins+Docker+Git实现自动化部署

    1.搭建gogs,详情可以看我这篇文章: 使用docker搭建私服gogs

    2.安装Jenkins,详情可以看这篇文章: CentOS 7 安装 Jenkins        

    3.安装docker-compose,关于docker-compose的安装和介绍,可以看这篇文章: Docker(四):Docker 三剑客之 Docker Compose

    4.创建项目,添加docker文件和docker-compose 

         a,直接使用vs自动生成版本,不作任何修改:

              

              Dockerfile

    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

    FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
    WORKDIR /app
    EXPOSE 80

    FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
    WORKDIR /src
    COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
    RUN dotnet restore "WebApplication1/WebApplication1.csproj"
    COPY . .
    WORKDIR "/src/WebApplication1"
    RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

    FROM build AS publish
    RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "WebApplication1.dll"]

          Docker-compose.yml文件

            需要修改下ports ,原本是默认 - ":80" ,如果不修改的话,每次发布后端口会变的

              创建好项目之后,就在git上创建仓库,然后把项目放进去

       

    5.jenkins创建任务

        1.创建任务,选择自由风格

              2.配置git代码仓库地址,构建环境

                 

                

               

     这里的是设置轮询去git拉取代码,如果代码有更新就触发构建操作,H/2 * * * * 是指每2分钟轮询拉取一次;

               

           

           添加构建脚本

              

                  

                 

    echo ========build and run container===========
    docker-compose up -d --build

        然后执行构建

          

          构建成功,浏览器访问成功:

           

        

      最终效果:

            修改页面代码,提交代码后,等2分钟左右,或者手动去执行构建,刷新页面,就会发现页面也更新了

            

            

    6.问题 

        a.如果安装j完对应的工具,无法访问一般都是防火墙问题,关闭防火墙或者添加端口

        b.可能出现问题 Jenkins初始化的管理密码之后,浏览器中一直卡在空白界面中,没有内容加载出来,解决办法:

             用vi编辑文件,修改https://updates.jenkins.io/update-center.jsonhttp://mirror.xmission.com/jenkins/updates/update-center.json修改之后:wq保存退出

    vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

        c.jenkins任务执行失败(docker-compose:command not found):

         

           解决办法:

             1.如果你是使用docker里面的jenkins容器,则 docker exec -it jenkins /bin/bash  进入容器后安装docker-compose

             2.如果是直接在centos上面安装,则在安装完jenkins后要映射对应的docker-compose文件   sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose  

        d.如果出现权限问题,可以看下是否要把将jenkins用户加入docker组  

    gpasswd -a jenkins docker
    sudo service jenkins restart

       

     遗留知识点:

        a.这个只是单机版,集群版后续有时间再研究下

        b.我们实际上生成环境是不会提交代码的,都是用dll,也就是发布后的文件,所以这里的dockerfile文件 只需要保留成这样就行了

            

    FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime WORKDIR /app COPY published/aspnetapp.dll ./ ENTRYPOINT ["dotnet", "aspnetapp.dll"]

        c.同时项目里面的配置文件我们正常来说是不会提交到git的,那么如何更新呢?

  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/mc-hui/p/12450228.html
Copyright © 2011-2022 走看看