Docker搭建持续集成环境(GitLabJenkins)
Posted beanjiuwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker搭建持续集成环境(GitLabJenkins)相关的知识,希望对你有一定的参考价值。
1.安装Docker
2.拉取postgresql、redis、gitlab、jenkins镜像,并创建容器:
1)docker pull sameersbn/postgresql
2)docker pull sameersbn/redis
3)docker pull gitlab/gitlab-ce
4)docker pull jenkinsci/blueocean
5)docker run --name gitPostgresql -d --privileged=true -e ‘DB_NAME=gitlabhq_production‘ -e ‘DB_USER=gitlab‘ -e ‘DB_PASS=123456‘ -e ‘DB_EXTENSION=pg_trgm‘ -v /usr/local/dockerC/jenkinsRelated/postgresql/data:/var/lib/postgresql sameersbn/postgresql
6)docker run --name gitRedis -d --privileged=true -v /usr/local/dockerC/jenkinsRelated/redis/data:/var/lib/redis sameersbn/redis
7)docker run --name gitlab -d --link gitPostgresql:postgresql --link gitRedis:redisio -p 10022:22 -p 10080:80 -e ‘GITLAB_PORT=10080‘ -e ‘GITLAB_SSH_PORT=10022‘ -e ‘SMTP_AUTHENTICATION=login‘ -v /usr/local/dockerC/jenkinsRelated/gitlab/data:/home/git/data gitlab/gitlab-ce
8)docker run --name jenkins -u root -p 8889:8080 --privileged=true -v /usr/local/dockerC/jenkinsRelated/jenkins/data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/dockerC/jenkinsRelated/jenkins:/home jenkinsci/blueocean
3.Gitlab创建项目, idea提交代码到gitlab
4.idea-maven-项目打包:clear -> package
添加maven打包插件,使其可以正常运行,否则找不到main方法,运行不了
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐maven‐plugin</artifactId> </plugin> </plugins> </build>
打包生成jar包在target文件夹。
cmd进入该目录, 运行 java -jar *.jar, 启动jar包, 测试。
5.手动打包方式:
1)上传打包文件 test01.jar 到linux服务器
2)创建Dockerfile文件(名称必须为Dockerfile):
FROM java:8 #基础镜像,即基于java:8创建镜像,若没有则自动拉取
ENV ARTIFACTID myeureka #ENV 配置环境变量 key-val
ENV ARTIFACTVERSION 1.0-TEST
ENV HOMW_PATH /usr/local/dockerC/proj01
ADD test01.jar myeureka.jar #添加test01.jar到容器内指定路径
ENTRYPOINT ["java","-jar","myeureka.jar"] #执行的命令
3)创建镜像:docker build -t 镜像名:版本 . (最后一个点 . ,表示当前路径下找Dockerfile文件)
docker images查看镜像:
6.自动打包方式:maven提供docker-maven-plugin插件可完成从打包到构建镜像器过程:
1)pom文件添加以下内容,提交pom_docker.xml到gitlab,通过git拉取代码到linux服务器:git clone ****.git ---gitlab的ip不固定, 修改.git文件夹下的 config文件
<build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--docker镜像相关的配置信息--> <configuration> <!--镜像名,这里用工程名--> <imageName>${project.artifactId}-${project.version}</imageName> <!--Dockerfile文件所在目录--> <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory> <!--TAG,这里用工程版本号--> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> <imageName>${project.artifactId}:${project.version}</imageName> <!--构建镜像的配置信息--> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.artifactId}-${project.version}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
2)进入要打包的工程目录,执行命令: mvn -f pom_docker.xml clean package -DskipTests docker:build (需要安装maven)
7.Jenkins相关配置:
1)配置相关插件: jdk、maven、git
Jenkins -> Manage Jenkins -> Global Tool Configuration:
2)新建任务;
1)源码管理: git拉取代码
2)构建:执行相关shell脚本,如检查是否已存在镜像,则删除
3)构建:进入pom文件位置,执行打包、创建镜像等操作
#!/bin/bash
curDir=$(pwd)
echo "$curDir"
cd xc-govern-center
curDir=$(pwd)
echo "$curDir"
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven3.5.4/bin/mvn clean package -f pom_docker_registry.xml -DskipTests docker:build
6.打包、构建镜像、推送到Docker仓库 pom.xml:
<build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--docker镜像相关的配置信息--> <configuration> <!--镜像名,这里用工程名--> <imageName>${project.artifactId}-${project.version}</imageName> <!--Dockerfile文件所在目录--> <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory> <!--TAG,这里用工程版本号--> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> <registryUrl>192.168.2.140:5000</registryUrl> <pushImage>true</pushImage> <imageName>192.168.2.140:5000/${project.artifactId}:${project.version}</imageName> <!--构建镜像的配置信息--> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.artifactId}-${project.version}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
以上是关于Docker搭建持续集成环境(GitLabJenkins)的主要内容,如果未能解决你的问题,请参考以下文章
jenkins+docker+portainer搭建持续集成环境
手把手搭建jenkins + docker + k8s 持续集成、自动化发布环境
Docker+Jenkins持续集成环境使用docker+jenkins构建nodejs前端项目