docker+svn(gitlab)+jenkins+maven自动部署

1,054 阅读7分钟

svn自动部署安装配置

环境

  1. 系统:centos7.7

  2. 主机:192.168.0.193

  3. docker: 19.03.5

  4. maven:3.6.3

  5. jdk:1.8

  6. svn:1.7.14

  7. Jenkins:2.190.3

安装maven

  • 官网下载(本机采用3.6.3)

    [Maven – Download Apache Maven](maven.apache.org/download.cg…)

    image.png

  • home目录新建maven文件夹,把下载的文件上传到maven文件夹,为了不受权限限制,使用命令赋予所有权限

    chmod -R 777
    

    image.png

  • 解压安装包

     tar -zxvf apache-maven-3.6.3-bin.tar.gz
    
  • 配置环境变量

    进入解压文件夹pwd,复制maven的绝对路径 /home/maven/apache-maven-3.6.3

    image.png

  • 编辑配置文件并添加以下配置

    vim /etc/profile
    
    export MAVEN_HOME=/home/maven/apache-maven-3.6.3
    export PATH=$MAVEN_HOME/bin:$PATH
    

    image.png

  • 保持退出,并执行命令使之生效

    source /etc/profile
    
  • 查看是否安装成功

    mvn -v
    

    image.png

  • 如上图所示表示安装成功

安装jdk

  • home目录新建jkd文件夹将压缩包上传至文件夹

    image.png

  • 查询是否自带jdk,如果有先卸载然后再安装

    rpm -qa | grep jdk
    

    image.png

  • 卸载

    yum -y remove
    
    yum -y remove java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64
    yum -y remove java-1.7.0-openjdk-headless-1.7.0.241-2.6.20.0.el7_7.x86_64
    yum -y remove copy-jdk-configs-3.3-10.el7_5.noarch
    

    image.png

    直到查询没有为止

    image.png

  • 解压新上传的jdk1.8

    tar -zxvf jdk-8u11-linux-x64.tar.gz
    
  • 进入解压目录pwd,复制绝对路径

    /home/jdk/jdk1.8.0_11
    

    image.png

  • 编辑系统配置文件配置环境变量

    vim /etc/profile
    
    export JAVA_HOME=/home/jdk/jdk1.8.0_11
    export PATH=$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin
    

    image.png

  • 保持退出,并执行命令使之生效

    source /etc/profile
    
  • 查看jdk是否安装成功

    java -version	
    

    image.png

  • 上图表示安装成功

安装svn

  • 安装svn服务

    yum -y install subversion
    

    不知道什么时候安装过了,显示我已经安装

    image.png

  • 创建svn目录

    image.png

  • 创建svn仓库,名为repos

    image.png

  • 修改仓库配置文件

    1. 编辑svnserve.conf

      vim repos/conf/svnserve.conf
      

      将下面四行注释解开并修改第一行anon-access = none,然后保存退出

      image.png

    2. 修改passwd文件,添加用户

      vim repos/conf/passwd
      

      添加了一个用户liucong,密码为123456,然后保存退出

      image.png

    3. 修改authz文件,赋值创建用户权限

      vim repos/conf/authz
      

      将用户liucong 设置对repos用户读写权限

      image.png

  • 启动svn服务

    svnserve -d -r /home/svn
    
  • 查看svn服务是否启动

    ps ef | grep svn
    

    image.png

  • 仓库地址

    svn://192.168.0.193/repos

  • windows连接

    svn://192.168.0.193/repos

    并输入上面设置的用户名和密码,切记连接之前记得关闭防火墙

    image.png

    image.png

    image.png

Jenkins安装与配置

  • 拉取jenkins

    docker pull jenkins
    

    image.png

  • 查看镜像

    docker images
    

    image.png

  • 创建jenkins目录

    mkdir -p /home/jenkins
    
  • 修改权限

    chown -R 1000 /home/jenkins/
    
  • 启动jenkins

    docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/jenkins:/var/jenkins_home jenkins:latest
    

    image.png

  • 访问

    192.168.0.193:9090

    根据提示,进入容器查看/var/jenkins_home/secrets/initialAdminPassword文件找密码

    进入容器:docker exec -it ddd2e4dcf731 /bin/bash

    查看密码:cat /var/jenkins_home/secrets/initialAdminPassword

    image.png

    密码:a762c435c13e41e08df4f5ebe83b2a8a

    注意:其实在查看/home/jenkins/secrets/initialAdminPassword也可以,因为我们启动jenkins的时候用命令(看上面命令的绿色部分)指定了/home/jenkins目录挂载到容器里面的/var/jenkins_home目录,所以一切在容器里面生成的文件都会在宿主机上生成

    image.png

    image.png

  • 进入安装插件

    image.png

  • 建议安装插件

    image.png

  • 艾玛卧槽,发现全部安装失败

    image.png

  • 稍候解决上述问题,先创建一个管理员账号,方便登录

    image.png

  • 点击系统管理,查看插件安装失败原因,如下图所示,应该是版本太低所导致

    image.png

    image.png

  • 如下图所示,下面提供了下载更新版的war包,但我们这里是docker拉取的,不想tomcat启动那样,直接换个war包就可以

    image.png

  • 因为是docker直接拉取的,因此我决定删除现有版本的容器,2.190.3版本的镜像

    首先停止现有的jenkins容器:docker stop 容器ID

    然后删除容器:docker rm 容器ID

    最后删除镜像:docker rm 镜像ID

  • 官网查看最新版本又可供docker拉取的版本

    [Jenkins download and deployment](www.jenkins.io/download/)

    image.png

  • docker拉取2.190.3版本

    1. 拉取

      docker pull jenkins:2.190.3
      

      如下图所示并没有找到2.190.3版本

      image.png

    2. 去docker官网搜索一下,如下图所示

      image.png

    3. 执行上图命令,如下图所示可以下载,等待下载完毕启动,重复上面步骤,这里不重复贴图了

      docker pull jenkins/jenkins:2.190.3-centos
      

      image.png

  • 下载成功,启动

    docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/jenkins:/var/jenkins_home jenkins/jenkins:2.190.3-centos
    

    image.png

    image.png

  • 启动之后,访问192.168.0.193:9090,查看密码登录,然后重新安装建议安装的插件,如下图所示,大部分都安装成功了

    image.png

  • 上面先选择继续创建第一个用户

    image.png

  • 登录之后进入插件管理,插件已安装的插件,发现Build Time插件存在,所以就不管了

    image.png

  • 进入全局工具配置,配置jkd,maven等等...

    image.png

    配置settings.xml找到maven的安装目录,如下图所示

    image.png

    注意:上图所示我配置的路径还是jenkins容器内的maven目录,记得下面修改了setting.xml文件之后将整个/home/maven/目录复制到/home/jenkins/目录里面

    上图所示配置好之后还需要将settings.xml的仓库地址改为国内站点,提升下载速度,如下图所示

    vim /home/maven/apache-maven-3.6.3/conf/settings.xml
    
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        <mirrorOf>central</mirrorOf>       
    </mirror>
    

    image.png

    image.png

    image.png

    注意:上面的java_home和maven_home为什么是/var/jenkins_home/,因为jenkins是安装在docker里面的,这时候使用的就是docker容器里面的路径,需要手动将jdk和maven的解压文件复制到/home/jenkins/里面,如下图所示,至于为什么复制到/home/jenkins目录,那是因为我们上面启动jenkins容器的时候就将/home/jenkins目录挂载到容器里面的/var/jenkins_home/了,所以将jdk和maven复制到/home/jenkins会在容器的/var/jenkins_home/目录生成相同的文件

    image.png

    进入容器查看:如下图所示

    image.png

    注意:推荐安装的插件没有maven插件需要手动搜索安装,进入插件管理,等待安装完成自动重启

    image.png

    image.png

    然后自己弄一个项目上传到svn

    此处我在springtools上新建一个svn资源库,然后上传一个项目上去,资源库的地址就是上面安装svn之后的版本库地址

    image.png

    将项目提交上去,如下图所示,抱歉,为了方便快速svn文件目录结构不是很规范,请自行参考百度建立规范的文件目录结构

    image.png

    先在本地启动,检测是否能访问成功,如下图所示,本地启动可以访问成功,接下来配置自动部署

    image.png

  • 创建一个新的maven工程,如下图所示

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

  • 以上就是jenkins拉取svn代码发布的全过程,当然还没有完,上面只是拉取并进行基础配置,并没有实时的更新启动我们在服务器的项目,docker相关配置参考下面步骤

    1. 首先我们在系统管理————>插件管理中先下载一个Publish over ssh插件,如下图所示,我已经下载过了,没下载的可以点击可选插件进行搜索下载,下面会用得到

      image.png

      image.png

    2. 第二步,进入系统管理的系统配置,配置docker主机相关的东西,如下图所示

      image.png

      image.png

      找到上图所在的位置填写上面的参数

      PassPhrase:服务器的密码

      Name:任意命名

      Hostname:服务器地址(我服务器ip是192.168.0.193)

      Username:服务器登录的用户名(我本机是用root用户登录的)

      Remote Diractory(远程目录):说实话,这里没搞懂什么意思,猜想是进入哪个目录,这里我就给了个/进入根目录的意思,当然填写/home也ok

      填写好之后点击右下方的按钮测试下,左边出现seccess即可,然后点保存退出

    3. 接着点击项目,进入项目配置,如下图所示

      image.png

      image.png

      首先我们点击的时候要选择通过SSH发送文件或执行命令,这里为什么会有这个选项是因为前面我们安装了Publish over ssh插件,否则是不会有这个选项的

      image.png

      各项参数配置解释如下:

      Name:选择我们前面在系统管理系统配置里面配置的服务器

      Source files:源文件,我这里填写了**/*.jar,意思是讲所有生成的jar包都移到远程目录配置下的文件夹下

      Remote directory:远程目录:是我新建的放项目jar包的目录,如下图所示,就是主要的文件,打码的都是用不到的,这里为了避免误导,所以打码了

      image.png

      Exec command:意思是执行命令这里我填写了docker.sh所在的绝对路径,如上图所示

      整个配置的意思就是:当点击jenkins构建项目的时候jenkins会到svn拉取最新的

      代码通过我们配置的maven进行编译打包,打包之后会执行下图

      我们配置的参数,首先会将jar生成在我们配置的远程目录里面,然后在执行我们配置的

      docker.sh这个脚本,下面还有个高级按钮,里面需要将下下图的选项勾上,否则就会生成target文件夹,如上图所示

      image.png

      image.png

      注意:这里遇到过一个大坑,就是如下图所示,Pre Steps 和Post Steps都可以进行上面的配置,那么有什么区别呢?百度了一下大概的意思是

      Pre Steps是预处理步骤,也就是先执行命令,再打包编译生成jar包

      Post Steps是后处理,即:先打包编译生成jar包,在执行命令

      事先我是在Pre Steps配置的上图信息,导致每次都需要构建两次项目才能真正的看到svn代码的变化,为什么呢?原因就是先执行命令的时候jar包还没有打包编译好,所以每次执行都是上一次的jar包,第二次构建的时候就把上一次构建的jar包运行了,所以才会出现为什么每次都需要构建两次项目才能看到svn代码的变化,后来改为Post Steps先编译打包,再执行命令就好了,正确的步骤应该是先打包编译在执行脚本

      image.png

    4. 以上就是整个jenkins上面的配置,下面介绍服务器当中的脚本,如下图所示就是所有的文件,为了避免造成误导,我将自己瞎建的文件打码了,下图的两个文件分别是在Jenkins配置svn和gitlab使用到的

      image.png

      image.png

      Dockerfile文件如下

      FROM java:8
      #作者
       MAINTAINER liucong
      #  简化 jar 的名字路径 (左边是服务器中jar包的路径,因为当前文件是和jar包同级,所以直接写名字即可,右边是镜像中要存放jar包的路径)
      VOLUME /home/project/spring-boot-01-helloword-svn/
      ADD spring-boot-01-helloword-0.0.1-SNAPSHOT.jar app.jar
      #  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就此行,后面的jar包路径就是上面要设置的jar包路径>)
      # CMD java -jar /app.jar
      ENTRYPOINT ["java","-jar","/app.jar","--server.port=9999","-c",">/log/app.log"]
      #  设置对外端口为 9999
       EXPOSE 9999
      

      image.png

      docker.sh脚本如下

      #操作/项目路径(Dockerfile存放的路劲)
      BASE_PATH=/home/project/spring-boot-01-helloword-svn
      # 源jar路径  即jenkins构建后存放的路径
      SOURCE_PATH=/home/jenkins/workspace/spring-boot-01-helloword-svn
      #docker 镜像/容器名字或者jar名字 这里都命名为这个
      SERVER_NAME=spring-boot-01-helloword-svn
      #容器id
      CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
      #镜像id
      IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
      rm -rf $BASE_PATH/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar
      echo "最新构建代码 $SOURCE_PATH/target/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar 迁移至 $BASE_PATH ...."
      #把项目从jenkins构建后的目录移动到我们的项目目录下同时重命名下
       /bin/cp -rf $SOURCE_PATH/target/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar $BASE_PATH/
      #修改文件的权限
      #docker stop $SERVER_NAME #停止正在运行的容器
      #docker rm $SERVER_NAME #删除正在运行的容器
      #docker rmi $SERVER_NAME #删除镜像
      # 构建docker镜像
              if [ -n "$IID" ]; then
                      echo "存在$SERVER_NAME镜像,IID=$IID"
                      docker stop $SERVER_NAME #停止正在运行的容器
                      docker rm $SERVER_NAME #删除正在运行的容器
                      docker rmi $SERVER_NAME #删除镜像
                      cd $BASE_PATH
                      docker build -t $SERVER_NAME .
              else
                      echo "不存在$SERVER_NAME镜像,开始构建镜像"
                              cd $BASE_PATH
                      docker build -t $SERVER_NAME .
              fi
      #docker stop $SERVER_NAME #停止正在运行的容器
      #docker rm $SERVER_NAME #删除正在运行的容器
      #docker rmi $SERVER_NAME #删除镜像
      # 运行docker容器
      # --name docker-test                 容器的名字为docker-test
      #   -d                                 容器后台运行
      #   -p 3636:3636                       指定容器映射的端口和主机对应的端口都为3636
      #   -v /usr/ms_backend/:/usr/ms_backend/   将主机的/usr/ms_backend/目录挂载到容器的/usr/ms_backend/ 目录中(不可少每次
      本地更新jar包重启容器即可,不用重新构建镜像
      docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -p 9999:9999 -d $SERVER_NAME
      echo "$SERVER_NAME容器创建完成"
      

      image.png

      image.png

  • 以上就是docker+svn+jenkins+maven自动部署的所有配置,下面看测试

    1. 首先看java文件,返回hello word,如下图所示

      image.png

    2. Jenkins构建

      image.png

      image.png

    3. 访问

      http://192.168.0.193:9999/springboot/hello

      确实返回hello word(9999端口是我们在Dockerfile文件配置了的,并且docker运行的镜像也指定了9999端口)

      image.png

    4. 修改java文件

      改成hello liucong并且提交到svn

      image.png

    5. 再次构建

      image.png

      image.png

    6. 再次访问

      http://192.168.0.193:9999/springboot/hello

      如下图所示返回hello liucong表示整个流程部署成功

      image.png

    7. 以上就是整个流程的部署配置

gitlab自动部署安装配置

环境

  1. gitLab:

  2. 环境同上,新增gitLab

其他配置参考以上文件,本次主要安装gitLab和nginx以及jenkins上面的配置

gitLab 安装

  • gitLab镜像拉取

    docker pull gitlab/gitlab-ce
    

    gitlab-ce为稳定版本,后面如果不写版本号,则默认拉取最新latest版

    image.png

  • 查看镜像

    docker images
    

    image.png

  • 运行镜像

    docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
    

    -d:后台运行

    -p:将容器内部端口向外映射

    --name:命名容器名称

    -v:将容器内数据文件夹或者日志配置文件挂载到宿主机目录

    image.png

  • 配置

    按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)

    1. 编辑文件,修改以下内容

      vim /home/gitlab/config/gitlab.rb
      

      external_url 'http://192.168.0.193'(配置http协议所使用的访问地址,不加端口号默认为80)

      gitlab_rails['gitlab_ssh_host'] = '192.168.0.193'(配置ssh协议所使用的访问地址和端口)

      gitlab_rails['gitlab_shell_ssh_port'] = 222(此端口是run时22端口映射的222端口)

      image.png

      image.png

    2. 保存退出

  • 重启gitlab容器

    docker restart gitlab
    

    image.png

  • 访问

    http://192.168.0.193

    (因为我的gitlab端口为80,所以浏览器url不用输入端口号,如果端口号不是80,则打开为:ip:端口号),第一次进入要输入新的root用户密码,设置好只有确认就行,然后点击登入

    image.png

  • 注册账号

    image.png

    image.png

  • 创建工程,这里还是以上面教程的项目为例

    image.png

    image.png

  • 打开本地git bash使用以下命令生成ssh私钥

    1. 生成私钥

      ssh-keygen -t rsa -C '***********@gmail.com'
      

      这里的公钥和私钥生成以下目录

      Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.

      Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.

      image.png

    2. 查看私钥

      cat ~/.ssh/id_rsa.pub
      

      ~表示用户目录,比如我的windows就是c:\Users\Administrator

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiKZTTL8mMmsh4YZhF4cICbpwJlpXDlzxxrPAyldf7Ywh47EYcMZ9YrcLkifQeiMrPk+a6wn7Q9HKjOcZFBRS8g8QWNMD/+S6u6hXuhgePwFPYxg6mTDDNpyaw YcxislxLIL3rPYbMg2gmX+X2gH7Vm1waiUon2SV780s3dgAq+XlCLQ14dB60+XhMu+27BcxVKdXOku56 JILvmbK4Ww2B2A6Gxsh3xGDOga8bouoNlP2mlQipEs2W+y6+xkrNgS7XoKT/EbPKKvGd/lCEnApcmDNSONt5KCQEWbpQGPLna9vgfb6rQ/dF6g9HMwJZh+nJoCdxOy+u5rVvypo2JieXfdliucong@gmail.com

      image.png

    3. 配置gitLab

      找到Pofile Stting – SSH Keys – Add SSH Key,并将上一步复制的内容粘贴到key所对应的文本框中

      image.png

      image.png

      image.png

      image.png

    4. 本地新建文件夹上传到git

      image.png

      打开命令框,进入到fdliucong,设置用户名和邮箱

      git config –global user.name “刘聪”

      git config –global user.email “fdliucong@gmail.com

      image.png

      image.png

      然后再克隆项目

      git clone ssh://git@192.168.0.193:222/liucong/spring-boot-01-helloword.git
      

      image.png

      地址来自下图

      image.png

      完成之后,fdliucong文件夹就会出现项目

      image.png

      image.png

      不过这里只是一个空项目,需要将其他代码复制到spring-boot-01-helloword目录里面,通过命令上传到git,如下图所示

      首先进入到项目目录里面,

      cd spring-boot-010helloword/

      然后通过add命令将项目添加进去,实际上就是把文件添加到暂存区

      git add * (*表示所有文件和目录)然后提交项目

      git commit –m ‘描述’

      最后通过push命令推送到git

      git push origin master

      image.png

      image.png

      这样git上就有了

      image.png

    5. 以上就是gitlab上的代码上传,当然不止这一方式,下面我使用的工具是idea,可自行选择

jenkins安装配置

  • 为了区分将项目分别加了后缀,分别表示从svn,gitlab拉取的代码

    image.png

    image.png

  • 点击项目进行配置

    image.png

    下面的默认master就是分支名称,我这里默认发布主干,也可发布某个分支

    image.png

    image.png

    image.png

    image.png

  • 点击构建,如下图所示

    构建成功

    image.png

  • Jenkins脚本配置,以及服务器脚本

    基本和svn是一致的,但是服务器文件目录是不一样的,所以这里的配置也要做变更

    image.png

    image.png

  • 服务器目录如下

    上面的是gitlab配置,下面的是svn的配置,其实文件,文件内容是一样的

    image.png

    Dockerfile,和docker.sh文件和上面svn目录的文件一致,里面需要稍微做下改动,改掉目录名称和端口,这里贴在下面

    image.png

    dockerfile文件

    FROM java:8
    #作者
     MAINTAINER liucong
    #  简化 jar 的名字路径 (左边是服务器中jar包的路径,因为当前文件是和jar包同级,所以直接写名字即可,右边是镜像中要存放jar包的路径)
    VOLUME /home/project/spring-boot-01-helloword-gitlab/
    ADD spring-boot-01-helloword-0.0.1-SNAPSHOT.jar app.jar
    #  执行 java -jar 命令 (CMD:在启动容器时才执行此行。RUN:构建镜像时就此行,后面的jar包路径就是上面要设置的jar包路径>)
    # CMD java -jar /app.jar
    ENTRYPOINT ["java","-jar","/app.jar","--server.port=9999","-c",">/log/app.log"]
    #  设置对外端口为 7799
     EXPOSE 7799
    

    image.png

    docker.sh文件

    #操作/项目路径(Dockerfile存放的路劲)
    BASE_PATH=/home/project/spring-boot-01-helloword-gitlab
    # 源jar路径  即jenkins构建后存放的路径
    SOURCE_PATH=/home/jenkins/workspace/spring-boot-01-helloword-gitlab
    #docker 镜像/容器名字或者jar名字 这里都命名为这个
    SERVER_NAME=spring-boot-01-helloword-gitlab
    #容器id
    CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
    #镜像id
    IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
    rm -rf $BASE_PATH/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar
    echo "最新构建代码 $SOURCE_PATH/target/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar 迁移至 $BASE_PATH ...."
    #把项目从jenkins构建后的目录移动到我们的项目目录下同时重命名下
     /bin/cp -rf $SOURCE_PATH/target/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar $BASE_PATH/
    #修改文件的权限
     chmod -R 777 $BASE_PATH/spring-boot-01-helloword-0.0.1-SNAPSHOT.jar
     echo "迁移完成"
    #docker stop $SERVER_NAME #停止正在运行的容器
    #docker rm $SERVER_NAME #删除正在运行的容器
    #docker rmi $SERVER_NAME #删除镜像
    # 构建docker镜像
            if [ -n "$IID" ]; then
                    echo "存在$SERVER_NAME镜像,IID=$IID" 
                    docker stop $SERVER_NAME #停止正在运行的容器
                    docker rm $SERVER_NAME #删除正在运行的容器
                    docker rmi $SERVER_NAME #删除镜像
                    cd $BASE_PATH
                    docker build -t $SERVER_NAME .
            else
                    echo "不存在$SERVER_NAME镜像,开始构建镜像"
                            cd $BASE_PATH
                    docker build -t $SERVER_NAME .
            fi
    #docker stop $SERVER_NAME #停止正在运行的容器
    #docker rm $SERVER_NAME #删除正在运行的容器
    #docker rmi $SERVER_NAME #删除镜像
    # 运行docker容器
    # --name docker-test                 容器的名字为docker-test
    #   -d                                 容器后台运行
    #   -p 3636:3636                       指定容器映射的端口和主机对应的端口都为3636
    #   -v /usr/ms_backend/:/usr/ms_backend/   将主机的/usr/ms_backend/目录挂载到容器的/usr/ms_backend/ 目录中(不可少每次
    本地更新jar包重启容器即可,不用重新构建镜像
    docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -p 7799:9999 -d $SERVER_NAME
    echo "$SERVER_NAME容器创建完成"
    

    image.png

    image.png

    构建

    image.png

  • 访问

    http://192.168.0.193:7799/springboot/hello

    image.png

    更改源码,上传到gitlab,再发布

    image.png

    image.png

    访问 http://192.168.0.193:7799/springboot/hello

    image.png

  • 注意

    Dockerfile下图位置的端口需要docker.sh下图位置的端口保持一致,否则访问不了,亲测

    红框对应红框

    黄框对应黄框

    image.png

    image.png