gitlab-ci+docker+docker-compose自动化部署javaweb项目

1.在项目下新建Dockerfile文件

#第一步:下载tomcat镜像
#通过docker下载tomcat镜像,因为tomat镜像肯定有jdk,所以我们就不用单独再装jdk
#第二步:编写dockerfile
#建立dockerfile告诉docker需要做什么: 将war包放到项目目录下
FROM  hub.c.163.com/library/tomcat
MAINTAINER  wangwb@galasys.cn
 #通过copy命令将war包复制到tomcat的webapps下
COPY  ./war/crapapi.war  /usr/local/tomcat/webapps

2.在项目下新建docker-compose.yml文件

version: "3.0"
services:
  crapapi:
    container_name: crapapi  #容器名称
    image: crapapi:gs  #镜像下载地址
    ports:
      - "9380:8080"  #左边为需要映射在服务器上的端口
    expose:
      - "8080"    #项目端口号
    volumes:
      - ./tomcat/logs:/usr/local/tomcat/logs #挂载tomcat的日志,:左边是本地地址,右边是镜像地址(agent文件夹是项目下的Dockerfile中的配置的,启动时如果agent下没有logs文件夹就创建)

3.在项目下新建.gitlab-ci.yml文件

image: docker:stable  #声明使用docker的镜像

variables:  #变量
  SERVER_NAME: crapapi  #服务名称
  WAR_HOME: ./target/crapapi.war  #war包所在的地址路径
  BUILD_WAR_HOME: ./war/   #war文件夹
  IMAGE_NAME: crapapi:gs   #镜像名称

stages:   #流程步骤
  - build
  - build-image
  - deploy


构建war:
  image: $docker_host/ali_maven:3.6.3-jdk-8  #这里是使用私有的maven仓库中的ali_maven镜像用来打包
  stage: build
  variables:
    #maven 命令参数
    MAVEN_COMMAND_ARGS: -Dmaven.repo.local=.m2/repository -Dmaven.test.skip=true  #打包命令
  script:
    #maven 项目打包
    - mvn $MAVEN_COMMAND_ARGS package
    - if [ ! -d $BUILD_WAR_HOME ];  then mkdir -p $BUILD_WAR_HOME; fi  #判断war文件夹是否存在
    - cp $WAR_HOME $BUILD_WAR_HOME  #将war包拷贝到war文件夹下
  artifacts: #jar产物保存一天
    expire_in: 1 day
    name: "${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME}"
    paths:
      - $BUILD_WAR_HOME
  cache: # 缓存依赖
    key: MAVEN_REPOSITORY
    paths:
      - .m2/repository
  tags:
    - pack  #对应gitlab-runner的名字

构建镜像:
  stage: build-image
  image:
    name: docker/compose:1.27.4
    entrypoint: ["/bin/sh", "-c"]
  variables:
    EXIST_CONTAINER: docker ps --filter ancestor=${IMAGE_NAME}
  script:
    # 判断容器是否在运行,如果存在就停止
    - if [[ "${EXIST_CONTAINER}" != '' ]]; then docker-compose -f docker-compose.yml down; fi
    # 判断镜像是否存在,如果存在就删除
    - if [[ $(docker images -q ${IMAGE_NAME}) != '' ]]; then docker rmi $IMAGE_NAME; fi
    # docker 镜像打包
    - docker build -t $IMAGE_NAME .
  tags:
    - pack
  needs: ["构建war"]

部署开发环境:
  stage: deploy
  image:
    name: docker/compose:1.27.4
    entrypoint: ["/bin/sh", "-c"]
  dependencies: []
  script:
    # 运行docker-compose 启动镜像
    - docker-compose up -d
  tags:
    - pack
  needs: ["构建镜像"]

4.右击项目下的Dockerfile文件,然后点击open in terminal

输入命令:docker-compose up -d ,效果如下
gitlab-ci+docker+docker-compose自动化部署javaweb项目_第1张图片

5.提交代码push到gitlab,效果如下
gitlab-ci+docker+docker-compose自动化部署javaweb项目_第2张图片

你可能感兴趣的:(docker,docker-compose,git,intellij,idea,docker,linux,服务器)