使用docker-maven插件製作鏡像

一. 背景

廢話少說,容器化部署應用現在已經是很普遍了,springboot也使用的普遍,那麼,如何快速將一個springboot項目打包成一個docker鏡像呢?還有一個問題就是,對於研發和測試來說 自己的電腦上基本上不會安裝Windows版本的docker,那麼怎樣實現在本地輸入一個命令後就直接將代碼打包成一個鏡像呢?本文講述瞭如何實現在本地簡單配置maven後利用遠程Linux服務器將springboot應用打包成docker鏡像並推送到鏡像倉庫

二. docker安裝及配置

1. docker安裝

docker如何安裝在這裏就不多說了 有問題的話可以看看這篇文章

2.開啓2375端口,提供外部訪問docker

編輯docker文件:/usr/lib/systemd/system/docker.service,命令如下

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

修改ExecStart行,增加內容 -H tcp://0.0.0.0:2375 ,修改後如下:

在這裏插入圖片描述
重新加載docker配置

systemctl daemon-reload
systemctl restart docker 

配置完成後 瀏覽器訪問 http://192.168.30.108:2375/version
注:192.168.30.108爲遠程服務器的ip
如果界面顯示了docker的版本信息 則表示配置成功
在這裏插入圖片描述

三. dockerfile編寫

lz是這樣寫的 僅供參考

FROM java
LABEL MAINTANIER="xyl <[email protected]>"
ENV WORKDIR=/usr/local/share/goalgo/team-server

WORKDIR ${WORKDIR}

ADD *.jar ${WORKDIR}/

VOLUME ${WORKDIR}/logs

EXPOSE 80

CMD ["java","-Xms256m","-Xmx2048m","-Djava.security.egd=file:/dev/urandom","-jar","team-server-1.0-SNAPSHOT.jar","--server.port=80"]

dockerfile各個參數意思如下:
在這裏插入圖片描述

四.pom文件配置鏡像倉庫等信息

注:一下pom文件配置是不全的 主要將maven-docker插件的配置給出來了

	 <properties>
        <!--docker鏡像倉庫的路徑-->
        <docker.repository.url>reg.our51.com</docker.repository.url>
        <!---鏡像倉庫的命名空間即 項目名-->
        <docker.repository.namespace>goalgo</docker.repository.namespace>
        <!--對應maven setting.xml中的配置 請看本文標題五-->
        <docker.repository.serverId>docker-goalgo</docker.repository.serverId>
        <!--編譯docker鏡像的主機-->
        <docker.host>http://192.168.30.108:2375</docker.host>
    </properties>
    <dependencies>
        ...
    </dependencies>
    <build>
        <defaultGoal>compile</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.5.1</version>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <forceTags>true</forceTags>
                    <pushImage>true</pushImage>
                    <imageName>
                        ${docker.repository.url}/${docker.repository.namespace}/${project.artifactId}:${version}
                    </imageName>
                    <serverId>${docker.repository.serverId}</serverId>
                    <registryUrl>${docker.repository.url}</registryUrl>
                    <dockerDirectory>src/main</dockerDirectory>
                    <dockerHost>${docker.host}</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

在這裏插入圖片描述

五.maven配置

找到maven安裝目錄中的配置文件 修改setting.xml 配置server
在這裏插入圖片描述
在這裏插入圖片描述

六.執行打包

進入springboot項目目錄下 執行以下命令 進行打包

mvn clean package -Dmaven.test.skip=true -Dversion=lz070501 docker:build

注:-Dversion=lz070501 是指鏡像的版本號爲lz070501 如果遠程服務器上沒有jdk的鏡像 第一次打包會很慢 耐心等待即可
在這裏插入圖片描述
執行成功後 在docker服務器和鏡像倉庫上會看到docker這個docker鏡像
在這裏插入圖片描述
在這裏插入圖片描述
到此docker鏡像就製作完成啦,感謝您的閱讀,如有疑問請留言。

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