使用Docker Compose在Docker图像之间共享文件夹和Python文件
我希望我密切相关的项目使用Docker Compose在Docker图像之间共享文件夹和Python文件,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我希望我密切相关的项目server_1和server_2的不同Docker项目位于一个文件夹中,我可以使用Docker Compose同时构建/部署 示例项目目录: . ├── common_files │ ├── grpc_pb2_grpc.py │ ├── grpc_pb2.py │ └── grpc.proto ├── docker-compose.yml ├── flaskui │ ├── Dockerfile │ └── flaskui.py ├── server_
server_1
和server_2
的不同Docker项目位于一个文件夹中,我可以使用Docker Compose同时构建/部署
示例项目目录:
.
├── common_files
│ ├── grpc_pb2_grpc.py
│ ├── grpc_pb2.py
│ └── grpc.proto
├── docker-compose.yml
├── flaskui
│ ├── Dockerfile
│ └── flaskui.py
├── server_1
│ ├── Dockerfile
│ └── server_1.py
├── server_2
│ ├── Dockerfile
│ └── server_2.py
└── server_base.py
我希望两个问题有一个共同的解决方案:
公共文件/
server\u base.py
我考虑过在docker compose.yml中使用
只读卷挂载,但这并不能解释如何从项目文件(如flaskui/Dockerfile
)中引用common_文件
,您需要将包含grpc文件和server_base.py
的本地目录作为卷装入server_1
和server_2
容器中。这样,只有一个真实来源(您的本地目录),您可以从两个容器中使用它们
您可以在容器的docker compose.yml
文件中添加volumes
定义。下面是我为您的用例创建的基本组成文件:
version: "3"
services:
server_1:
image: tutum/hello-world
ports:
- "8080:8080"
container_name: server_1
volumes:
- ./common_files:/common_files
server_2:
image: tutum/hello-world
ports:
- "8081:8081"
container_name: server_2
volumes:
- ./common_files:/common_files
common_files
是本地目录中的文件夹,其中包含server_base.py
以及要作为卷装载到需要使用它们的容器中的grpc文件。这些称为主机卷,因为您正在从主机装载本地文件作为容器的卷
使用此设置,当您exec
进入server\u 1
时,您可以看到/
目录中有一个通用\u文件
文件夹。与服务器2类似
您可以使用docker compose exec server\u 1/bin/sh
您还可以阅读有关Docker卷的更多信息。您使用容器中的目录引用这些文件(按卷装入)。