【问题标题】:Automation of docker image creationdocker镜像创建自动化
【发布时间】:2020-06-02 11:06:42
【问题描述】:

我是 docker 新手。 Plaining:自动化构建过程并创建 docker 镜像并将其存储在 dockerHub 上。 我想在 DockerFile 中配置整个构建过程。

这是我的 Dockerfile

# the first stage of our build will use a maven 3.6.1 parent image
FROM maven:3.6.1-jdk-8-alpine AS MAVEN_BUILD

# copy the pom and src code to the container
WORKDIR ./

COPY ./ ./

# package our application code
RUN mvn clean package -X


FROM java:8-jdk-alpine

WORKDIR ./
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "config-consumer-0.0.1-SNAPSHOT.jar"]

关于从 Docker 中心运行自动化构建的构建报告

figuring mojo 'org.sprin
gframework
.boot:spring-boot-maven-plugin:2.2.7.RELEASE:repackage' with basic configurator -->
[DEBUG] (f) attach = true
[DEBUG] (f) excludeDevtools = true
[DEBUG] (f) excludes = []
[DEBUG] (f) executable = false
[DEBUG] (f) finalName = config-consumer-0.0.1-SNAPSHOT
[DEBUG] (f) includeSystemScope = false
[DEBUG] (f) includes = []
[DEBUG] (f) outputDirectory = /target
[DEBUG] (f) project = MavenProject: com.my.config:config-consumer:0.0.1-SNAPSHOT @ /pom.xml
[DEBUG] (f) skip = false
[DEBUG] -- end configuration --
[INFO] Replaci
ng main arti
fact with repackaged archive
[INFO] -------------------------------------------------------
-----------------
[INFO] BUILD SUCCESS
[INFO] --------------------------
----------------------------------------------
[INFO] Total time: 42.126 s
[INFO] Finished at: 2020-06-02T10:38:05Z
[INFO
] ------------------------------------------------------------------------
Removing intermediate container 1ad5140601c5
---> f68f9fc066f1
Step 5/8 : FROM java:8-jdk-alpine
---> 3fd9dd82815c
Step 6/8 : WORKDIR ./
---> Using cache
---> ef8bf11c31c1
Step 7/8 : EXPOSE 8080
---> Using cache
---> cc296c743b8b
Step 8/8 : ENTRYPOINT ["java", "-jar", "config-consumer-0.0.1-SNAPSHOT.jar"]
---> Using cache
---> 726792fb0fd9
Successfully built 726792fb0fd9
Successfully tagged nitishk58/microservicedummy:latest
Pushing index.docker.io/nitishk58/microservicedummy:latest...
Done!
Build finished

关于运行容器的错误报告。

sudo docker run -p 3333:8080  nitishk58/microservicedummy
Unable to find image 'nitishk58/microservicedummy:latest' locally
latest: Pulling from nitishk58/microservicedummy
709515475419: Pull complete 
38a1c0aaa6fd: Pull complete 
5b58c996e33e: Pull complete 
Digest: sha256:7cf1809d2ea43c16a103985db626435715e589b898808fb87c565eaa096e52cd
Status: Downloaded newer image for nitishk58/microservicedummy:latest
Error: Unable to access jarfile config-consumer-0.0.1-SNAPSHOT.jar

容器详情如下...

CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                      PORTS               NAMES
38b0a07f9677        nitishk58/microservicedummy   "java -jar config-co…"   15 minutes ago      Exited (1) 15 minutes ago                       mystifying_burnell

【问题讨论】:

    标签: java docker dockerfile docker-registry dockerhub


    【解决方案1】:

    你的 Dockerfile 是一个multi-stage build,有两个阶段。当你到达第二行FROM 时,Docker 基本上是重新开始;在您的最终图像中,没有任何东西不是 COPYed 或在最后的 FROM 行之后构建的。

    你需要COPY第一阶段的jar文件:

    COPY --from=MAVEN_BUILD /target/config-consumer-0.0.1-SNAPSHOT.jar .
    

    我会把它放在WORKDIR 行之后。

    你应该可以通过运行来验证同样的事情

    docker build -t nitishk58/microservicedummy .
    docker run nitishk58/microservicedummy
    

    离线;我希望你会得到相同的结果。

    我还可能将最终映像更改为基于 JRE 的映像 (FROM java:8-jre-alpine) 以不包含完整的 JDK;这将导致图像明显变小。

    【讨论】:

    • 感谢它完美运行... :) 肯定会尝试使用 JRE
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2017-11-04
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多