例如,我有项目的下一个结构:
.
├── docker-compose.yml
├── library
└── _services
└──_service1
| └── Dockerfile
├──_service2
| └── Dockerfile
└──_service3
└── Dockerfile
如何将library
复制到每个服务中?还是使用library
包创建服务映像的更好方法?
答案 0 :(得分:0)
您不能复制Dockerfile所在父目录中的文件。
当然,您不想将库内容复制到每个服务目录中,但是可以。
在顶层为每个服务创建一个不同的Dockerfile。 例如:
docker-compose.yml 图书馆 Dockerfile.service1 Dockerfile.service2 Dockerfile.service3
然后每个dockerfile可以COPY
将库放入其中。
例如: 基础 图书馆 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/
。