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)的主要内容,如果未能解决你的问题,请参考以下文章

docker搭建gitlab+Jenkins持续集成环境

jenkins+docker+portainer搭建持续集成环境

手把手搭建jenkins + docker + k8s 持续集成、自动化发布环境

Docker+Jenkins持续集成环境使用docker+jenkins构建nodejs前端项目

K8S基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

微服务持续集成与部署-搭建