4

在我的应用程序中,我有 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 来构建和运行容器。

4

2 回答 2

5

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

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

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

于 2015-04-20T07:32:24.390 回答
3

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

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

您可以使用以下方式构建:

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

不幸的是,我认为您还不能使用 Compose 执行此操作,因此您可能必须使用单独的脚本来构建和标记您的图像,然后您可以在 Compose 中使用这些脚本。

于 2015-04-20T08:09:14.423 回答