如何从多个 Dockerfile 中的共享目录复制文件?
How to copy files from shared directory in multiple Dockerfile?
在我的应用程序中,我有 5 个 docker 个容器,每个容器都从从 Dockerfile 构建的图像开始。以下是结构:
-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 来构建和 运行 容器。
您可以定义一个专门用于将脚本保存在 volume (as a data volume container)
中的容器
scripts:
volumes:
- /path/to/scripts
application1:
volumes_from:
- scripts
application2:
volumes_from:
- scripts
/path/to/scripts
文件夹将在每个应用程序中共享。
scripts
Dockerfile 应该创建 /path/to/scripts
并在其中复制 script.sh
。
从 Docker 1.5 开始,您可以在构建上下文中为 Docker 文件指定一个路径。所以以下工作:
-projectdir
-docker
-script.sh
-application1
-Dockerfile
-application2
-Dockerfile
...
您可以使用:
$ cd docker
$ docker build -f application1/Dockerfile .
遗憾的是,我认为您还不能使用 Compose 执行此操作,因此您可能必须使用单独的脚本来构建和标记图像,然后才能在 Compose 中使用这些图像。
在我的应用程序中,我有 5 个 docker 个容器,每个容器都从从 Dockerfile 构建的图像开始。以下是结构:
-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 来构建和 运行 容器。
您可以定义一个专门用于将脚本保存在 volume (as a data volume container)
中的容器scripts:
volumes:
- /path/to/scripts
application1:
volumes_from:
- scripts
application2:
volumes_from:
- scripts
/path/to/scripts
文件夹将在每个应用程序中共享。
scripts
Dockerfile 应该创建 /path/to/scripts
并在其中复制 script.sh
。
从 Docker 1.5 开始,您可以在构建上下文中为 Docker 文件指定一个路径。所以以下工作:
-projectdir
-docker
-script.sh
-application1
-Dockerfile
-application2
-Dockerfile
...
您可以使用:
$ cd docker
$ docker build -f application1/Dockerfile .
遗憾的是,我认为您还不能使用 Compose 执行此操作,因此您可能必须使用单独的脚本来构建和标记图像,然后才能在 Compose 中使用这些图像。