• 方法2:使用Jenkins构建Docker镜像 --SpringCloud


    前提意义:
    SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像

    采用这种结构,代码的pom.xml文件需要修改

    大致步骤流程是:
    开发人员提交代码到Gogs仓库,触发webhooks钩子,然后Jenkins自动执行任务( 这一步可以删除钩子,手动进行操作),从整个Gogs仓库拉取代码,但是只编译打包其中的一个文件夹项目,生成jar包,然后根据文件夹项目根目录下的Dockfile文件使用远程Docker(其实就是本机安装的docker)制作镜像。

    1. SpringCloud项目结构

    Git仓库是整个项目,但是根据选项参数只编译打包spring-cloud-eureka-server-demo文件夹

    注意Dockerfile文件的位置,跟方法1的所在位置不同,相应的Dockfile文件中使用jar包的位置也不同,这个也需要注意

    Dockerfile文件内容

    FROM java:8
    MAINTAINER sandu <1103324414@qq.com>
    VOLUME /tmp
    ADD spring-cloud-eureka-server-demo-1.0-SNAPSHOT.jar /eureka-server-demo.jar
    ENTRYPOINT ["java","-Xmx200m","-Xms200m","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka-server-demo.jar"]
    EXPOSE 9011
    
    

    pom.xml文件新增内容

    <?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.jarjune</groupId>
        <artifactId>spring-cloud-eureka-server-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>com.jarjune</groupId>
            <artifactId>spring-cloud-demo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
    
                <!-- tag::plugin[]  新增的内容-->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.4.3</version>
                    <configuration>
                        <imageName>tms/${project.artifactId}</imageName>
                        <dockerDirectory>src/main/docker</dockerDirectory>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </plugin>
                <!-- end::plugin[] -->
                
            </plugins>
        </build>
    
    
    </project>
    

    2. Docker配置

    开启远程访问:

    vim /lib/systemd/system/docker.service
    # 添加下面这行
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
    
    systemctl daemon-reload
    systemctl docker restart
    

    配置国内163源,配置Harbor私有仓库地址,避免出现无法登陆远程仓库的情况

    vim /etc/docker/daemon.json
    {
       "registry-mirrors": ["http://hub-mirror.c.163.com"],
        "insecure-registries": ["https://192.168.75.12"]
    }
    
    

    jenkins操作界面的shell命令使用的用户是jenkins用户,但是需要访问到docker的文件,没有相关权限造成的,采用最简单的办法,修改相关文件的权限,使jenkins用户可以进行访问

    chmod 777 /var/run/docker.sock
    

    3. Jenkins配置

    安装docker插件
    系统管理---系统设置---云,添加docker配置信息,具体如下图:

    4. 工程中的设置

    详看截图:

    shell命令:

    cd ${WORKSPACE}/${module_filename} 
    /usr/local/apache-maven-3.6.2/bin/mvn clean package docker:build -Dmaven.test.skip=true  # 重要步骤
    docker login http://192.168.75.12 -u admin -p harbor12345
    docker tag eureka-server:0.5 192.168.75.12/springcloud/eureka-server:0.7
    docker push 192.168.75.12/springcloud/eureka-server:0.7
    

    5. 步骤截图

    7. 查看生成的docker镜像并运行

    
    [root@bogon ~]# docker run -p 9011:9011 -d tms/spring-cloud-eureka-server-demo
    feb37c7360de06a792542bed63de8fb3f003d9aff8af563022f9af13951a5499
    [root@bogon ~]# docker ps
    CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
    feb37c7360de        tms/spring-cloud-eureka-server-demo   "java -Xmx200m -Xms2…"   4 seconds ago       Up 3 seconds        0.0.0.0:9011->9011/tcp   kind_panini
    
    

    6. 验证

    使用浏览器访问: http://本机ip:9011

  • 相关阅读:
    【Collect】免费图片库网站推荐(国外高清可商用)
    "One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll?"的解决方法
    "从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总
    Fira Code:适合程序员的编程字体
    【Notepad++】notepad++主题和字体设置(非常好看舒服的)
    【sql server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 解决方案
    【SQL】sql update 多表关联更新方法总结
    【C#】 List按指定字段的给出的自定义顺序进行排序
    3 常量与变量
    2 go语言的基础
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/11800008.html
Copyright © 2020-2023  润新知