我将docker用于开发目的。在开发结束时,我现在有了依赖项库以及项目的二进制文件。
现在,我想在生产环境中部署此容器,但是我不想在其中包含源代码的情况下推送二进制文件(出于明显的原因)。
有没有什么工具可以帮助我有效地做到这一点?
谢谢
答案 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
行,它将文件从先前的映像复制到后面的映像。这样一来,您可以在第一阶段拥有完整的编译环境,而在最后阶段只有运行时环境,并在两者之间复制编译器输出。