从official guide,我们可以通过maven或gradle构建docker映像。它说我们需要一个Dockerfile,然后运行maven或gradle命令以生成可运行的Docker映像:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
但是在我的用例中,云供应商要求我们仅提供一个Dockerfile,他们将根据提供的Dockerfile从我的代码库构建Docker映像。而且没有机会运行自己的构建脚本。那么我该如何处理呢?有没有办法仅从Dockerfile构建可运行的Docker映像?
答案 0 :(得分:0)
在Dockerfile中使用RUN命令在构建时执行任何操作。 例如:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
RUN echo "something" && \
echo "then print this" && \
echo "and so on.. any shell command can be performed here"
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
避免使用多个RUN命令。为每个图层创建一个新的覆盖层,这会增加最终图像的大小。
很高兴知道如何创建图像以供理解。
当您执行docker build .
时,您的Docker客户端会将Dockerfile目录中的所有内容复制到Docker主机。然后docker根据FROM指令创建一个容器,并简单地遵循Dockerfile中的指令修改该容器。完成说明后,泊坞窗根据该临时容器的状态创建一个映像,并丢弃该容器。