如何从多个Dockerfile中的共享目录复制文件?

在我的应用程序中,我有5个Docker容器,每个容器从Dockerfile构build的图像开始。 以下是结构:

-projectdir -docker -application1 -Dockerfile -script.sh -application2 -Dockerfile -script.sh -application3 -Dockerfile -application4 -Dockerfile -script.sh -application5 -Dockerfile 

script.sh被复制到应用程序1,2和4的Dockerfile中。 问题是我必须在每个应用程序目录中放置相同的script.sh。 有什么办法可以使用包含单个script.sh的共享文件夹,并从中复制? 我正在使用docker-compose来构build和运行容器。

您可以定义专用于将脚本保存在一个卷中的容器 (作为数据容器 )

 scripts: volumes: - /path/to/scripts application1: volumes_from: - scripts application2: volumes_from: - scripts 

/path/to/scripts文件夹将在每个应用程序中共享。
scripts Dockerfile应该创build/path/to/scripts并复制其中的script.sh

从Docker 1.5开始,您可以在Dockerfile的构build上下文中指定path。 所以下面的工作:

-projectdir -docker -script.sh -application1 -Dockerfile
-application2 -Dockerfile ...

你可以用

$ cd docker $ docker build -f application1/Dockerfile .

不幸的是,我不认为你可以用Compose来做这个,所以你可能不得不使用一个单独的脚本来构build和标记你的图像,然后你可以在Compose中使用它们。