指定卷时,轨道停止工作

时间:2015-08-12 06:50:51

标签: linux permissions docker

我想让Tracks Docker image工作。

当我运行给定的命令docker run -d --name=tracks -p 80:80 staannoe/tracks时,一切都很顺利。但是,如果我添加了一个docker run -d --volume /srv/tracks:/var/www --name=tracks -p 80:80 staannoe/tracks的卷,那么它会突然中断:执行docker run后,当我将浏览器指向“跟踪网址”时,我得到的只是404错误。

我注意到/srv/tracks也总是空的,与无卷情况下的/var/www不同。值得注意的是,docker logs显示当我指定音量时,我得到:

AH00112: Warning: DocumentRoot [/var/www/tracks/public] does not exist

即使我手动创建/srv/tracks/public,我也会收到此错误。有什么问题?

编辑: 我不再确定权限是否是问题。我做了sudo chmod 777 /srv/tracks我仍然得到同样的错误。我还尝试sudo chgrp 33 /srv/tracks33显然是www-data;默认情况下,目录由root:root拥有,但这仍然无法解决。

1 个答案:

答案 0 :(得分:0)

文件夹/var/www似乎包含您的应用所需的数据。当您将/srv/tracks作为卷装入/var/www时,其内容会被内容ov /srv/tracks 隐藏

根据您的警告信息:

  

AH00112:警告:DocumentRoot [/ var / www / tracks / public]不存在

可能您想要执行此类操作,并将tracks文件夹作为子文件夹打击www,而不是覆盖整个www文件夹:

docker run ... -v /srv/tracks:/var/www/tracks ...

否则:如果您需要保留/srv/www个文件但使用其他文件夹替换www,则可以将tracks个文件放入其他文件夹,例如/bootstrap期间Dockerfile版本。在容器启动期间,您只需通过提供自己的小启动脚本将/bootstrap文件复制到/srv/www

编辑:确保您没有将tracks空文件夹装入/var/www/tracks。在该文件夹中有一些预期的文件。如果找不到它们,您将获得HTTP 404。顶级需要这些文件夹:

$ docker exec -it tracks ls /var/www/tracks
COPYING       README.md  bin        db        lib     public  vendor
Gemfile       Rakefile   config     doc       log     test
Gemfile.lock  app    config.ru  features  mkdocs.yml  tmp

确保您用作卷的自定义tasks文件夹基于原始图像内容。