<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # dockerfile-maven-plugin 插件使用 參考:[Spotify官方推薦Maven插件構建Docker鏡像](https://zhuanlan.zhihu.com/p/90122357) [項目地址](https://github.com/spotify/dockerfile-maven) 這是一個將Docker與Maven無縫集成的Maven插件,可以方便地使用Maven打包Docker image **設計目標:** * 插件使用Dockerfile構建Docker項目,將Docker構建過程集成到Maven構建過程中。 * 使用mvn package構建項目,會同時完成Docker鏡像構建。 * 使用mvn deploy推送jar包時,dockedr鏡像同時會被push。 * 也可以用`mvn dockerfile:build`和`mvn dockerfile:push`單獨構建和推送docker鏡像。 >該插件需要Java 7或更高版本以及Apache Maven 3或更高版本。 >要運行集成測試或在開發中使用該插件,需要有一個能正常工作的Docker。 ## A 實際使用案例 **項目環境說明:** 1. docker倉庫是使用harbor搭建的可視化私有倉庫 2. 本機是win10企業版,開啟hpyer-v,安裝docker desktop環境 3. 開啟本機docker的2375api上傳端口 4. 需要手動編寫dockerfile,與pom文件同級 5. java項目的pom文件需要修改兩個模塊 ### 1. 修改pom的**properties**模塊 該模塊中需要增加插件版本號以及docker倉庫的地址 ``` <properties> ........pom文件原有內容省略........ <dockerfile.maven.version>1.4.3</dockerfile.maven.version> <docker.registry.name.prefix>harbor.zhimai168.com:1234/test</docker.registry.name.prefix> </properties> ``` ### 2. 修改pom**plugins**模塊 該模塊增加插件詳細配置 ``` <build> <plugins> <plugin> ........其他插件的配置信息,略........ </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfile.maven.version}</version> <dependencies> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${docker.registry.name.prefix}/${project.artifactId}</repository> <tag>${project.version}</tag> <username>admin</username> <password>xxxxxxxx</password> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build> ``` repository指定docker鏡像的repo名字。 tag指定docker鏡像的tag。 buildArgs可以指定一個或多個變量,傳遞給Dockerfile,在Dockerfile中通過ARG指令進行引用。 **特別說明:** 1. 不要使用1.4.0版本,該版本有bug,不能上傳到私有倉庫 2. 如果注釋掉goals內代碼,package打包時就不會構建docker鏡像 3. docker倉庫賬號密碼放在配置中有一定危險性,還好harbor有機器人賬戶,只能推拉,不能登錄 4. 暫時未找到同時給一個鏡像打多個tag的方法 ### 3.創建dockerfile ``` FROM openjdk:8-jre #添加本地jar包 RUN mkdir -p /home/admin/app/ RUN mkdir -p /home/admin/tomcat/ ENV CATALINA_HOME /home/admin/tomcat/ ARG JAR_FILE ADD target/${JAR_FILE} /home/admin/app/ # 將啟動命令寫入啟動腳本 start.sh RUN echo "$JAVA_HOME/bin/java -jar $JAVA_OPTS -Ddubbo.address.ip=$POD_IP -Djava.security.egd=file:/dev/./urandom /home/admin/app/${JAR_FILE} --spring.profiles.active=prod" > /home/admin/start.sh && chmod +x /home/admin/start.sh WORKDIR $CATALINA_HOME ENTRYPOINT ["/bin/bash", "/home/admin/start.sh"] ``` ### 4.構建具體命令 構建命令: 1. 打jar包并構建docker鏡像 mvn package 2. 僅構建docker鏡像 mvn dockerfile:build 3. 一鍵打包并推送 mvn deploy 如果maven私庫未配置或不能推送,會報錯 4. 僅推送docker鏡像 mvn dockerfile:push 僅推送docker鏡像,不推送jar包到私庫 ## B 其他細節 ### 1. 加密docker倉庫密碼 從版本1.3.6開始,可以使用maven的 settings.xml文件進行身份驗證,而不是使用docker配置。 先在pom文件周,添加類似于以下配置: ``` <configuration> <repository>docker-repo.example.com:8080/organization/image</repository> <tag>latest</tag> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> </configuration> ``` 然后再在mave的setting文件中,添加服務器配置 ``` <servers> <server> <id>docker-repo.example.com:8080</id> <username>me</username> <password>mypassword</password> </server> </servers> ``` 由于setting是maven本地文件,不會提交到代碼庫,有一定程度的保密作用 ### 2.跳過docker構建命令 | 命令 | 用途 | | --- | --- | | dockerfile.skip | 跳過整個dockerfile插件 | | dockerfile.build.skip | 跳過docker構建步驟 | | dockerfile.tag.skip | 跳過docker打tag步驟 | | dockerfile.push.skip | 跳過docker推送步驟 | 例如,跳過整個dockerfile插件: `mvn clean package -Ddockerfile.skip` ### 3. 將docker打包的鏡像不存放在本機 如果不想把構建的鏡像存放在本機,例如存放到專用的docker打包服務器上,可以開啟docker的2378端口, 然后再本機(開發期)修改環境變量`DOCKER_HOST` 為`tcp://xxxx:2375`即可 >2375是為Docker開啟的遠程訪問API的端口,如果你開啟的是其他端口,請使用具體的端口。如果你的Docker沒有開啟遠程訪問API,請自行Google開啟。 linux修改環境變量方法 ``` export DOCKER_HOST=tcp://localhost:2375 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看