Python Docker中管理持久数据存储的惯用方法
设置 我的本地机器上有10多个Gig的图像,将来可能会有TB的图像,在这种情况下,它将托管在aws上。这些图像将被提供给一些网站,也将作为机器学习管道的输入 现在我正在本地机器上开发。源代码位于Python Docker中管理持久数据存储的惯用方法,python,docker,docker-compose,dockerfile,Python,Docker,Docker Compose,Dockerfile,设置 我的本地机器上有10多个Gig的图像,将来可能会有TB的图像,在这种情况下,它将托管在aws上。这些图像将被提供给一些网站,也将作为机器学习管道的输入 现在我正在本地机器上开发。源代码位于path/to/src,数据位于path/to/images。我已经用Dockerfile设置了Docker环境: FROM bamos/openface ADD . /face-off WORKDIR /face-off RUN pip install -r requirements.txt
path/to/src
,数据位于path/to/images
。我已经用Dockerfile
设置了Docker
环境:
FROM bamos/openface
ADD . /face-off
WORKDIR /face-off
RUN pip install -r requirements.txt
EXPOSE 5000
CMD [ "python", "app.py" ]
和docker compose
文件:
version: '2'
services:
web:
build: .
image: face-off-web
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/face-off
redis:
image: "redis:alpine"
问题
因为我是在Docker
容器中开发的,所以我需要访问path/to/images
中的所有图像。现在让我们保持简单,假设我使用预先指定的磁盘路径读取图像。我认为我的选择是:
path/to/src
,但这对我来说似乎很脏Dockerfile
中添加目录。因此,我需要将这两个目录移动到path/to/project
,而Dockerfile
将位于此处。然后将src移动到path/to/project/src
,将数据移动到path/to/project/data
。但这又一次闻起来很像选项1
docker compose
以某种方式将数据导入。我现在不知道该怎么做,尽管我读了docker volume上的文档version: '2'
services:
web:
build: .
image: face-off-web
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/face-off
- /images/on/host:/path/in/container
redis:
image: "redis:alpine"
在旁注中,要么使用,要么不同时使用
version: '2'
services:
web:
build: .
image: face-off-web
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/face-off
- /images/on/host:/path/in/container
redis:
image: "redis:alpine"
另一方面,可以同时使用,也可以不同时使用。当我这样做时,我会得到:“错误:在文件中”。/docker compose.yml“service”volumes“没有任何配置选项。docker-compose.yml中的所有顶级键都必须映射到配置选项字典。”仔细检查缩进,目前docker compose假设
卷是一项服务,我只发布了docker-compose.yml的一个片段,我认为-.:/face off
将足以作为参考。啊,所以我使用的是1.6.0版,尽管在我的compose文件中显示的是版本2。当你说当前版本时,你是指版本2还是版本3?不,我是指你的docker compose.yml
当前是错误的。我根据您最初的docker compose.yml
更新了我的答案,并提供了一个完整的示例。希望现在更清楚一点。啊,我明白了,当我这样做的时候很有趣,我指定使用主机上的相对路径和绝对路径,但是当我用docker run运行容器时-它面对web bash
,我cd
四处,我在任何地方都找不到它?当我这样做时,我得到:错误:文件“./docker compose.yml”服务“卷”中没有任何配置选项。docker-compose.yml中的所有顶级键必须映射到配置选项字典。“仔细检查缩进,目前docker compose假设卷
是一项服务,我只发布了docker-compose.yml的一个片段,我假设-.:/face off
将足以作为参考。啊,所以我使用的是1.6.0版,尽管在我的compose文件中显示的是版本2。当你说当前版本时,你是指版本2还是版本3?不,我是指你的docker compose.yml
当前是错误的。我根据您最初的docker compose.yml
更新了我的答案,并提供了一个完整的示例。希望现在更清楚一点。啊,我明白了,当我这样做的时候很有趣,我指定了主机上的相对路径和绝对路径,但是当我运行带有docker run的容器时,它面对web bash
,我cd
,我在任何地方都找不到它?