2017-06-20 54 views
0

管理持久性数据存储设置惯用方式泊坞

我有图像的10+演出我的本地机器上,有可能在未来图像的TB级,在这种情况下,它会被托管,即,aws。这些图像将被提供给某个网站,也可以作为机器学习管道的输入。

现在我正在开发我的本地机器。源代码位于path/to/src,数据位于path/to/images。我已经成立了一个Docker环境Dockerfile

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。现在让我们保持简单,并说我使用预先指定的磁盘路径读取图像。我觉得我的选择是:

  1. 的一个简单方法是将所有图像移动到path/to/src,但这似乎脏给我。

  2. 另一种可能性是ADDDockerfile中的目录。那么我需要将这两个目录移动到path/to/project,其中Dockerfile将位于此处。然后将src移至path/to/project/src,并将数据移至path/to/project/data。但这又有点像选项1的味道。

  3. 使用docker-compose以某种方式带来数据。尽管阅读docker volume上的文档,但我现在不知道如何执行此操作。

处理这个问题的惯用方法是什么?如果方式是选项3,有人可以解释一下吗?

回答

2
  1. Bring the data in somehow using docker-compose. I do not know how to do this right now, despite reading the docs on 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" 

在一个侧面说明,无论是使用buildimage不能同时使用。

+0

当我这样做时,我得到:“错误:在文件'./docker-compose.yml'服务'卷'没有任何配置选项您的docker-compose.yml中的所有顶级密钥必须映射到配置选项字典“。 – chibro2

+1

重新检查缩进,目前docker-compose假设'volumes'是一项服务,我只发布了一个docker-compose.yml的片段,我假设' - 。:/ face-off'就足够了。 –

+0

啊,所以我在版本1.6.0上,即使在我的撰写文件中它说版本2.当你说当前你的意思是版本2或3? – chibro2