美文网首页
Docker--Jenkins(一键部署)

Docker--Jenkins(一键部署)

作者: LcChina_9527 | 来源:发表于2020-09-13 16:39 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:Docker--Jenkins(一键部署)

          本文链接:https://www.haomeiwen.com/subject/sfcnektx.html