使用docker--在构建图像时在docker compose中挤压

使用docker--在构建图像时在docker compose中挤压,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,在构建新的docker图像时,是否有方法使用docker compose中的-squash选项?现在他们已经在6个月前在docker中实现了-squash,但是我还没有看到任何关于如何在docker-compose.yml中使用它的文档 这附近有工作吗?我看到一个公开发行的文件请求这个而不是使用-squash,你可以使用 下面是一个使用Django web框架的Python应用程序的简单示例。我们希望将测试依赖项分离到不同的映像中,这样就不会将测试依赖项部署到生产环境中。此外,我们希望将自动化文

在构建新的docker图像时,是否有方法使用docker compose中的-squash选项?现在他们已经在6个月前在docker中实现了-squash,但是我还没有看到任何关于如何在docker-compose.yml中使用它的文档

这附近有工作吗?我看到一个公开发行的文件请求这个

而不是使用-squash,你可以使用

下面是一个使用Django web框架的Python应用程序的简单示例。我们希望将测试依赖项分离到不同的映像中,这样就不会将测试依赖项部署到生产环境中。此外,我们希望将自动化文档实用程序与测试实用程序分开

以下是Dockerfile:

为了使用此文件构建不同的图像,我们需要docker build的-target标志。-target参数应在Dockerfile中的AS关键字后命名图像的名称

构建基本映像:

docker build-目标库-标记库

构建测试映像:

docker构建-目标测试-标记测试

构建文档映像:

docker构建-目标文档-标记文档

这使您可以构建从同一基础映像分支的映像,这可以显著缩短较大映像的构建时间

您还可以在Docker Compose中使用多阶段构建。从docker-compose.yml的3.4版开始,您可以在YAML中使用target关键字

以下是引用上述docker文件的docker-compose.yml文件:


如果使用此docker-compose.yml运行docker compose build,它将在Dockerfile中生成测试和文档映像。与任何其他docker-compose.yml一样,您还可以添加端口、环境变量、运行时命令等。

您可以使用类似技巧的方法实现挤压效果

FROM oracle AS needs-squashing
ENV NEEDED_VAR some_value
COPY ./giant.zip ./somewhere/giant.zip
RUN echo "install giant in zip"
RUN rm ./somewhere/giant.zip

FROM scratch
COPY --from=needs-squashing / /

不幸的是,由于这个请求,他们打算从docker中完全删除这个特性。请注意,当您这样做时,您将丢失环境设置、入口点定义和其他元数据,您复制的只是文件系统。
version: '3.4'

services:
    testing:
        build:
            context: .
            target: testing
    documentation:
        build:
            context: .
            target: documentation
FROM oracle AS needs-squashing
ENV NEEDED_VAR some_value
COPY ./giant.zip ./somewhere/giant.zip
RUN echo "install giant in zip"
RUN rm ./somewhere/giant.zip

FROM scratch
COPY --from=needs-squashing / /