我对DockerMaven插件的理解

1 DockerMaven插件 微服务部署有两种方法:

(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚 拟机并拷贝至JDK容器。

(2)通过Maven插件自动部署。 对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。

Maven插件自动部署步骤:

(1)修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654修改后如下:
在这里插入图片描述

(2)刷新配置,重启服务
systemctl daemon‐reload
systemctl restart docker 
docker start registry
(3)在工程pom.xml 增加配置
    <properties>
        <java.version>1.8</java.version>
        <docker.registry>10.211.55.23:5000</docker.registry>
    </properties>
    
    <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>1.0.0</version>
                <configuration>
                    <imageName>${docker.registry}/${project.artifactId}</imageName>
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <baseImage>zhangfuli/jdk1.8</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://10.211.55.23:7654</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>
(4)在当前根目录创建Dockerfile文件

Dockerfile文件内容:

FROM zhangfuli/jdk1.8
MAINTAINER myCrawler
ENTRYPOINT ["java", "-jar", "/app.jar"]
# Add the service itself
ADD target/crawler-first-1.0-SNAPSHOT.jar /app.jar
(5)命令行进入项目根目录
mvn install
(6)命令行进入当前需要上传到私服项目目录
mvn clean package docker:build 只执行 build 操作

mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像

mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像

编译成功
注意:image的命名规范 only [a-z0-9-_.]不要大写字母

此步骤遇到的问题:
1.http: server gave HTTP response to HTTPS client
原因:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。
解决:在docker server启动的时候,增加启动参数,默认使用HTTP访问
打开

 vim /usr/lib/systemd/system/docker.service

在ExecStart后面添加--insecure-registry ip:5000
修改好后重启docker 服务

systemctl daemon-reload 
systemctl restart docker
(7)查看镜像
docker images

宿主机
浏览器访问 http://10.211.55.23:5000/v2/_catalog ,输出

{
  "repositories": [
    "crawler-first"
  ]
}
(8)启动
docker run ‐di ‐‐name=base ‐p 9001:9001
10.211.55.23:5000/crawler-first:1.0‐SNAPSHOT

相关连接:
Maven 插件之 docker-maven-plugin 的使用
报错http: server gave HTTP response to HTTPS client

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值