Docker:将文件夹复制到多个图像中

时间:2018-07-23 09:14:26

标签: docker docker-compose dockerfile

例如,我有项目的下一个结构:

.
├── docker-compose.yml
├── library
└── _services
    └──_service1
    |  └── Dockerfile
    ├──_service2
    |  └── Dockerfile
    └──_service3
       └── Dockerfile

如何将library复制到每个服务中?还是使用library包创建服务映像的更好方法?

2 个答案:

答案 0 :(得分:0)

您不能复制Dockerfile所在父目录中的文件。

当然,您不想将库内容复制到每个服务目录中,但是可以。

  1. 在顶层为每个服务创建一个不同的Dockerfile。 例如:

    docker-compose.yml 图书馆 Dockerfile.service1 Dockerfile.service2 Dockerfile.service3

然后每个dockerfile可以COPY将库放入其中。

  1. 如果您的图书馆是服务的基本组成部分,则只需为其创建一个映像并将其作为服务的基础映像即可。

例如:     基础       图书馆       Docker文件     服务       Dockerfile.service1       Dockerfile.service2       Dockerfile.service3

使用Dockerfile

FROM alpine:3.7
COPY library/...

docker build -t base

和一个Dockerfile.serviceN

  FROM base

通常,我发现最好不要在docker compose中包括构建Dockerfile。您可以在需要时构建服务,将其推送到映像存储库(例如:quay.io,docker.io),然后docker compose文件在部署时将其引入。

答案 1 :(得分:0)

一种维护方式是单个映像并具有Docker Volumes。您还可以在docker-compose.yml中指定卷并使用共享数据。

撰写数量:https://docs.docker.com/compose/compose-file/#volumes
Docker中的卷:https://docs.docker.com/storage/volumes/