1、先参考
docker学习之compose安装gitlab-runer
这两篇文章。
2、在idea中创建一个maven工程,在pom.xml文件中修改:<packaging>war</packaging>
3、设置web工程,如图:
4、在webapp下创建一个页面,index.html
编写.gitignore文件,内容如下:
.idea
out
target
*.iml
添加完以后将项目push到你的gitlab上面
上面的文章中有提到过在安装gitlab-runner时,就已经安装了maven和jdk以及挂载了宿主机的docker和docker-compose等等,
我们需要在在项目编写相关的Dockerfile和docker-compose.yml文件以及.gitlab-ci.yml文件,如图:
5、Dockerfile 编写如下:
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps
这就不用在解释了,之前的文章中都学习过了,忘了就再去看。
6、.gitlab-ci.yml 编写如下:
stages:
- test
test:
stage: test
script:
- echo first test ci
- /usr/local/maven/apache-maven-3.6.3/bin/mvn package
- cp target/testci-1.0-SNAPSHOT.war docker/testci.war
- docker-compose down
- docker-compose up -d --build
- docker rmi $(docker images -qf dangling=true)
这就不用在解释了,之前的文章中都学习过了,忘了就再去看。
7、docker-compose.yml 编写如下:
version: "3.1"
services:
testci:
build: docker
restart: always
container_name: testci
ports:
- 8080:8080
这就不用在解释了,之前的文章中都学习过了,忘了就再去看。
8、大概的执行流程:
当我们代码push到gitlab后,就会触发.gitlab-ci.yml
gitlab就会将代码推送到gitlab-runner里,gitlab-runner就会执行上面编写的shell脚本,
maven打包,将打包后的war复制到docker目录下
执行docker-compose down 将docker-compose.yml 执行的内容停止并删除
docker-compose up -d --build 将docker-compose.yml 执行内容
docker rmi $(docker images -qf dangling=true) 删除因为一些其他异常导致的空镜像
然后就是Dockerfile中的内容,拉取一个tomcat容器,将war包复制到webapp目录下,
暴漏端口为8080。访问http://192.168.150.137:8080/testci/,如图:
持续集成到此结束