Docker--Jenkins(一键部署)

dockerfile创建镜像JDK

# mkdir -p /usr/local/dockerjdk8   创建文件夹 ( -p 级联创建)
# 将jdk文件包上传到刚刚创建的dockerjdk8目录并解压
# vi Dockerfile   注意:文件名是固定的     此文件必须与上传的jdk文件同一目录

#依赖镜像名称和ID ( jdk依赖于contos7   contos7也叫基础镜像)
FROM centos:7           
#指定镜像创建者信息 
MAINTAINER lcchina        
#切换工作目录 
WORKDIR /usr 
RUN mkdir  /usr/local/java 
#ADD 是相对路径jar,把java添加到容器中 
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ 

#配置java环境变量 
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 
ENV JRE_HOME $JAVA_HOME/jre 
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 
ENV PATH $JAVA_HOME/bin:$PATH

执行命令构建镜像

docker build -t='dockerjdk8' .       名字可以随意起''可以省略,名字后面空格. 注意后边的空格和点,不要省略

查看镜像是否建立完成

docker images

创建容器

docker run -it jdk1.8 /bin/bash    

将服务通过dockerfile打成镜像

创建目录 mkdir /usr/local/server
并将打好的jar包上传到创建好的server目录下
上传方式一:在server目录 直接rz上传 (推荐)
上传方式二: Alt+P put G:\nacosspring\nacos_server\target\myapp.jar
将jar剪切到server目录下 mv myapp.jar /usr/local/server/

创建 vi Dockerfile

#  from是此时要打成镜像依赖于jdk镜像
FROM dockerjdk8  
#  挂载目录
VOLUME /tmp   
#  add移动到指定目录并解压      
ADD myapp.jar /usr/local/server/   
#  执行 相当于java -java app.jar
ENTRYPOINT ["java","-jar","/usr/local/server/myapp.jar"]  

执行命令构建镜像

docker build -t=myapp .       名字可以随意起''可以省略,名字后面空格. 注意后边的空格和点,不要省略

查询看镜像

docker images

镜像创建容器

docker run -di --name myapp -p 8012:8012 myapp

[私有仓库搭建与配置]

私有仓库说明图
(1)拉取docker私有仓库镜像
docker pull registry
(2)创建私有仓库容器并启动
docker run -di --name=registry -p 5000:5000 registry
docker start 容器id
(3)打浏览器访问地址
http://192.168.233.137:5000/v2/_catalog
(4)添加信认在开发服务器中添加私有仓库docker地址
vi /etc/docker/daemon.json
(5)添加以下内容,保存退出。(开发服务中添加公有服务中的docker地址)此配置是配置两个docker中的私有仓库
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.233.137:5000"]
}
(6)重启docker服务
systemctl restart docker  或   sevice docker restart

[镜像上传至私有仓库 A服务上传到B服务]

(1)将A服务中的镜像先打标记
docker tag dockerjdk8 192.168.233.137:5000/dockerjdk8
(2) 上传标记的镜像
docker push 192.168.233.137:5000/dockerjdk8 (上传)
docker pull 192.168.233.137:5000/dockerjdk8 (下载)

DockerMaven插件(重点)

说明:通过maven插件自动部署到私有仓库(如果不使用maven插件其将jar包通过dockerfile转成镜像并打成标记后才能上传并中间还有一台docker服务A--B.使用maven插件后直接打成镜像上传到私有仓库.中间不需要中转docker服务)

(1)修改宿主机的docker配置,让其可以远程访问(此配置让外部访问信认)
vi /lib/systemd/system/docker.service
#其中ExecStart=后添加配置
#说明0.0.0.0表示任意地址都可以访问但必须指定端口(端口自定义)
-H tcp://0.0.0.0:0312 -H unix:///var/run/docker.sock
(2) 刷新配置,重启服务
systemctl daemon-reload  (重新加载)
systemctl restart docker    (重启docker)
docker start registry   (重启私有仓库容器)
#如果不想麻烦 直接重启服务器即可
reboot (重启服务器)
(3) 在服务中工程pom.xml 增加配置
<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官网:
        https://github.com/spotify/docker-maven-plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <!--打标记,并上传到私有仓库-->
                <imageName>192.168.233.136:5000/${project.artifactId}:${project.version}
                </imageName>
              <!--指定基础镜像-->
                <baseImage>dockerjdk8</baseImage>
                <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
                <!--信认地址-->
                <dockerHost>http://192.168.233.136:0312</dockerHost>
            </configuration>
        </plugin>
    </plugins>
</build>
不通过私有库直接推送到docke中
    <build>
        <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.2.0</version>

                <configuration>
                    <!-- 镜像名称 -->
                    <imageName>${project.artifactId}:${project.version}</imageName>

                    <!-- 基础镜像jdk 1.8-->
                    <baseImage>java</baseImage>

                    <!--切换到/ROOT目录 -->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

                    <!-- 指定 Dockerfile 路径
                      <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                   -->

                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.4.182:0312</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>

                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>
        </plugins>
    </build>
IDEA docker 插件使用
添加docker插件
查看容器状态
配置信息
配置
启动
启动
查看
查看启动状态
点击IDEA右侧的M 选择服务执行以下命令
mvn clean package docker:build  -DpushImage
启动上传后的容器
docker run -di --name eureka -p 8001:8001  my_eureka:1.0-SNAPSHOT

Gogs安装与配置

(1) 下载镜像 (本地git服务器)
docker pull gogs/gogs
(2)启动容器
docker run -di --name gogs -p 3000:3000  gogs/gogs
(3) 配置
假设我的centos虚拟机IP为192.168.233.136 完成以下步骤​ 在地址栏输入[http://192.168.233.136:3000](http://192.168.233.136:3000) 会进入首次运行安装程序页面,我们可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大的公司,可以选择MySQL

首页只需修改红线两处即可

注册页面

点击加号创建仓库

创建仓库

创建成功后的仓库页面

IDEA选择git方式

选择git

打开Settings 找到git 选择本地安装git目录

添加git地址

将gogs地址添加

选择Add 添加本地git

上传到git服务器

添加注解并上传

上传并push

点击push

输入刚才创建的git账号与密码

刷新页面看到上传的服务

Jenkins安装

Jenkins架构图

配置maven插件与仓库

(1) 将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
执行安装命令: rpm -ivh jdk-8u171-linux-x64.rpm
(2)安装Maven与本地仓库
# 解压插件
tar -zxvf apache‐maven-3.3.9-bin.tar.gz
(3) 上传maven仓库
ALT+P
push -f  要上传的仓库目录
(4) 配置本地仓库目录(settings.xml)
编辑setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地仓库目录,内容如下
<localRepository>/usr/local/repository</localRepository>
(5)再次编辑settings.xml配置文件
vi /usr/local/maven/conf/settings.xml

<pluginGroups>     
    <pluginGroup>com.spotify</pluginGroup>  (添加些内容)   
</pluginGroups>

Jenkins安装与启动

(1)上传jenkins安装包并安装
创建目录:  mkdir  mkdir -p /usr/local/jenkins
安装命令:  rpm -ivh jenkins-2.83-1.1.noarch.rpm
(2) 配置jenkins
vi /etc/sysconfig/jenkins
修改配置jenkins内容
(3) 启动服务
systemctl start jenkins  或者 service jenkins start
启动后复制首页的密文进行解密
复制密文
cat /var/lib/jenkins/secrets/initialAdminPassword
进行解密

点击左侧安装插件

插件就gitsvn有用

注册账号

点击系统管理

点击管理插件

可选插件点击maven直接安装

点击全局工具配置

配置JDK环境变量

配置maven

点击首页新建

添加项目点击OK

勾选git并添加git地址

指定POM并添加加maevn命令并且保存

刷新页面点击右侧图标执行

发布说明

点击红框里的按钮查看执行代码

点击控制台输出

docker中安装jenkins

拉取镜像
docker pull jenkins/jenkins:lts
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349