我對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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章