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 ,效果如下
5.提交代码push到gitlab,效果如下