日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

制作 SOFABoot 應(yīng)用的 Docker 鏡像

更新時(shí)間:

在將應(yīng)用工程打包成 Docker 鏡像的方法上,SOFABoot 完全與 SpringBoot 一致。本篇將基于 SpringBoot 官方提供的文檔介紹如何將一個(gè) SOFABoot 的示例應(yīng)用工程制作成 Docker 鏡像。

前提條件

在運(yùn)行示例工程之前請(qǐng)先安裝 Docker 環(huán)境,具體操作請(qǐng)參見(jiàn) Docker 官方文檔

重要

在打包過(guò)程中,如果是 Mac OS,會(huì)出現(xiàn)連接問(wèn)題,解決方案請(qǐng)參見(jiàn) Docker 在 Mac 下的 2375 端口問(wèn)題

操作步驟

本教程介紹如何使用 Dockerfile 將一個(gè) SOFABoot 示例應(yīng)用的 JAR 包打包成鏡像。

編寫(xiě) Dockerfile 文件

Docker 提供了 Dockerfile 格式的文件來(lái)構(gòu)建應(yīng)用鏡像,創(chuàng)建一個(gè) Spring Boot 應(yīng)用的 Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
// 應(yīng)用 JAR 包的名稱必須遵循 artifactId-version 的格式
COPY sofaboot-docker-demo-web-1.0.0.jar /app.jar
ENV JAVA_OPTS=""

#商業(yè)版 SOFAStack 中間件需要輸入四元組進(jìn)行服務(wù)端注冊(cè)鑒權(quán),可以按照以下約定,在進(jìn)行容器化發(fā)布時(shí)以環(huán)境變量方式注入。詳情請(qǐng)參見(jiàn)服務(wù)網(wǎng)格的快速入門(mén)文檔。
# COM_ALIPAY_ENV=shared
# ENV COM_ALIPAY_INSTANCEID=
# ENV COM_ANTCLOUD_ANTVIP_ENDPOINT=
# ENV COM_ANTCLOUD_MW_ACCESS=
# ENV COM_ANTCLOUD_MW_SECRET=

ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]

java:8 是指 Docker Hub上官方提供的 Java 鏡像,版本號(hào)是 8,也就是 JDK 1.8。有了這個(gè)基礎(chǔ)鏡像后,Dockerfile 可以通過(guò) FROM 指令直接獲取它的狀態(tài)——也就是在容器中,Java是已經(jīng)安裝的。接下來(lái),通過(guò)自定義的命令來(lái)運(yùn)行 Spring Boot 應(yīng)用:

  • VOLUME /tmp創(chuàng)建 /tmp 目錄并持久化到Docker數(shù)據(jù)文件夾,因?yàn)?Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認(rèn)使用 /tmp 作為工作目錄。

  • COPY sofaboot-docker-demo-web-1.0.0.jar /app.jar 將應(yīng)用 JAR 包復(fù)制到/app.jar

  • ENTRYPOINT 表示容器運(yùn)行后默認(rèn)執(zhí)行的命令。

配置 Maven 打包插件

在 app/web 模塊的 pom 文件中添加 docker maven 的打包插件:

說(shuō)明

仔細(xì)檢查本地鏡像打包配置,如發(fā)現(xiàn)存在 outputDirectory 和 classifier 配置,需注釋掉或移除該配置。

<!--Docker maven plugin -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>${project.groupId}/${project.artifactId}:${project.version}</imageName>
        <!--Dockerfiler的文件目錄位置-->
        <dockerDirectory>src/main/resources/docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

打包

  1. 在工程模塊下執(zhí)行 mvn clean install -DskipTests,安裝模塊。

  2. 切換到 Web 模塊,打包鏡像:

    - cd app/web
    - mvn package docker:build -Dmaven.test.skip

    打包日志如下所示:

    Step1/6: FROM openjdk:8-jdk-alpine
    
    --->3675b9f543c5
    Step2/6: VOLUME /tmp
    
    --->Using cache
    ---> c7a81ace946a
    Step3/6: COPY sofaboot-docker-demo-web-1.0.0.jar app.jar
    
    ---> f24e191bc980
    Step4/6: RUN sh -c 'touch /app.jar'
    
    --->Running in 777a918b3314
    Removing intermediate container 777a918b3314
    --->183a3067e911
    Step5/6: ENV JAVA_OPTS=""
    
    --->Running in 70c238ef5b5b
    Removing intermediate container 70c238ef5b5b
    ---> a155e72ed7fc
    Step6/6: ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
    
    --->Running in c53eaccaf58f
    Removing intermediate container c53eaccaf58f
    --->57bb9c53cfe6
    ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
    Successfully built 57bb9c53cfe6
    Successfully tagged com.alipay.sofa/sofaboot-docker-demo-web:1.0.0
  3. 通過(guò) docker images 命令查看當(dāng)前鏡像文件:

    - docker images

    顯示結(jié)果:

    REPOSITORY                                 TAG                 IMAGE ID            CREATED              SIZE
    com.alipay.sofa/sofaboot-docker-demo-web   1.0.057bb9c53cfe6About a minute ago   105MB