基于git+jenkins+docker,运行本地hello工程
- 硬件设备
win10系统笔记本 - 环境
安装git,下载tomcat8.5,jenkins.war,安装oracle virsual vm, vm下安装centos7.5系 统,虚拟机环境下需要安装docker,配置网卡等
虚拟机需要新增网卡2,配置如下:
目的是可以通过ip地址访问,也可以通过配置网卡1端口映射访问,如下: - 将jenkins.war放到tomcat/webapps下并启动运行,浏览器访问:http://localhost:8183/jenkins,8183为已修改端口号。
- 配置jenkins,安装git,ssh,maven插件并配置等
系统配置:
工具配置:
5. 新建工程,并配置
本地编写hello工程
idea新建springboot web工程,pom配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>testgitjenkinsdocker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>testgitjenkinsdocker</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--<configuration>
<mainClass>com.example.testgitjenkinsdocker.TestgitjenkinsdockerApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
主类:
package com.example.testgitjenkinsdocker;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
@SpringBootApplication
@RestController
public class TestgitjenkinsdockerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestgitjenkinsdockerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(TestgitjenkinsdockerApplication.class, args);
}
@GetMapping("hello")
public void hello(HttpServletResponse response) throws Exception {
response.getWriter().write("hello my first test git+jenkis+docker!");
}
}
注意:这里要让war包工程可在自己的tomcat运行,尝试过几次只有这种方式可以。当然不是唯一,但其他方式未成功,待补充。
Jenkins新建该工程:
8.docker镜像构建脚本Dockerfile,及运行脚本deploy.sh
[[email protected] v1]# cat Dockerfile
FROM tomcat:latest
MAINTAINER zjx [email protected]
WORKDIR /usr
COPY testgitjenkinsdocker-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/
EXPOSE 8080
ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -f /usr/local/tomcat/logs/catalina.out
docker build -t zjx/tomcat:0.0.1 .
docker run --name=tomcat001 -p 8087:8080 -idt zjx/tomcat:0.0.1
说明:如果需要,可以push到docker hub,其他人再拉去。
将创建的java web镜像push到docker hub上:
首先停止容器:docker stop
docker tag /[:]
如:docker tag imageid panjq/tomcat_test:1.0
docker login
docker push /:
如: docker push panjq/tomcat_test:1.0
将镜像从docker hub上拉下来:
docker pull panjq/tomcat_test:1.0
9. 运行
http://192.168.56.102:8087/testgitjenkinsdocker-0.0.1-SNAPSHOT/hello
结果: