将Source + Binary Docker映像转换为仅Binary的Docker映像

时间:2018-08-02 17:34:31

标签: docker docker-compose

我将docker用于开发目的。在开发结束时,我现在有了依赖项库以及项目的二进制文件。

现在,我想在生产环境中部署此容器,但是我不想在其中包含源代码的情况下推送二进制文件(出于明显的原因)。

有没有什么工具可以帮助我有效地做到这一点?

谢谢

1 个答案:

答案 0 :(得分:0)

这是多阶段构建的常见用例。以简化的Java示例Dockerfile为例:

# first stage, just run this in dev environments
FROM jdk as build
# install dependencies
COPY src /src
# ... do build

# second stage, for prod use
FROM jre
# install dependencies
COPY --from=build /src/app.jar /app/
CMD java -jar /app/app.jar

您可以使用以下方法构建第一阶段:

docker build --target build -t app:dev .

然后为您的生产映像运行完整版本。重要的部分是COPY --from行,它将文件从先前的映像复制到后面的映像。这样一来,您可以在第一阶段拥有完整的编译环境,而在最后阶段只有运行时环境,并在两者之间复制编译器输出。