Apache和乘客在Docker mac和ubuntu上的表现不同

时间:2016-01-08 09:02:15

标签: macos apache ubuntu docker passenger

我遇到运行apache2 + passenger phusion + rails app的容器的一些问题,当我在mac或linux上部署它们时。 我使用从docker hub拉出的相同图像(基于ubuntu:14.04)和相同的运行命令

docker run -it -p 80:80 -p 443:443 -e RAILS_ENV=development --link pg my-image-name

在OSX 10.10.5上运行docker 1.9.1,构建a34a1d5一切正常。 在我的生产服务器ubuntu 14.04.3 LTS上,运行相同的docker版本,我收到以下错误

AH00035: access to / denied (filesystem path '/home/app/app') because search permissions are missing on a component of the path

使用chmod 775 -R / home / app设置权限。 这是乘客和apache版本+配置

Server version: Apache/2.4.7 (Ubuntu)
Server built:   Oct 14 2015 14:20:21
Phusion Passenger 5.0.22
<VirtualHost *:80>
    ServerName www.my-app.com
    DocumentRoot /home/app/app/public
    PassengerRuby /usr/bin/ruby
    RailsEnv development
    ErrorLog "/home/app/app/log/apache_error_log"
    CustomLog "/home/app/app/log/apache_access_log" common
    <Directory /home/app/app/public>
       AllowOverride all
       Options -MultiViews +FollowSymLinks +Indexes
       Require all granted
       Order allow,deny
       allow from all
    </Directory>
</VirtualHost>

我知道为什么我在运行相同容器的OS X和Ubuntu之间有两种不同的行为?

由于

1 个答案:

答案 0 :(得分:0)

issue 16741中所述:

  

我想我见过类似的问题,这与aufs驱动程序有关。

     

通过使用“devicemapper”而不是“aufs”来修复,感谢这篇文章:
  “Switching Docker from aufs to devicemapper

     

更改/etc/default/docker以启用设备映射器:
  (先保存图像)

# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="--storage-driver=devicemapper"

OP Alberto Sabaini确认它有效:

  

我认为Ubuntu LTS默认使用设备映射器,但是输入docker info | grep Storage,我在mac和Ubuntu中都得到Storage Driver: aufs
  奇怪的是,我的图像在mac上使用aufs和在设备映射器上的Ubuntu上旋转很好。