如何从多个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中使用它们。