2014-11-20 5 views
4

Я пытаюсь развернуть приложение Symfony 2 на Vagrant + Docker.Приложение Symfony 2 на Vagrant + Docker

Vagrantfile:

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "ubuntu/precise64" 
    # config.vm.synced_folder ".", "/vagrant", owner: 'web', group: 'web' 
    config.vm.network "forwarded_port", host: 5000, guest: 80 
    # config.vm.network "forwarded_port", host: 5001, guest: 3306 

    config.vm.provision "docker" do |d| 
    d.build_image "/vagrant/Docker", args: "-t site/web" 
    d.run "site/web", args: "-p 80:80 -v /vagrant/application:/var/www/site" 
    end 

end 

Dockerfile:

FROM ubuntu:precise 
MAINTAINER umbrella-web <http://umbrella-web.com/> 

ENV DEBIAN_FRONTEND noninteractive 

WORKDIR/

RUN echo "web:x:web:web::/home/web:/bin/bash" >> /etc/passwd 
RUN echo "web:x:web:" >> /etc/group 

# policy-rc.d access execution of start 
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d 

# Update repositories 
RUN apt-get update -y        && \ 
    apt-get install python-software-properties -y && \ 
    # add-apt-repository ppa:ondrej/apache2 -y   && \ 
    add-apt-repository ppa:ondrej/php5-oldstable -y && \ 
    apt-get update -y        && \ 
    apt-get upgrade -y 

# isntall packages 
RUN apt-get update -y && \ 
    apt-get -y install \ 
     apache2 \ 
     php5 \ 
     php5-mysql \ 
     libapache2-mod-php5 \ 
     rpl \ 
     # phpmyadmin \ 
     php-apc \ 
     # debug packages 
     curl \ 
     nano 

# Enable apache mods. 
# RUN a2enmod php5 
RUN a2enmod rewrite 
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf 
RUN /etc/init.d/apache2 restart 
ADD apache/www /var/www/site 
ADD apache/default /etc/apache2/sites-available/default 
# RUN touch /var/www/site/index.html 
# RUN echo "Hello!!!" /var/www/site/index.html 

RUN chown -R www-data:www-data /var/www/site 

USER web 

EXPOSE 80 

# CMD /usr/sbin/apache2ctl -D FOREGROUND 
CMD bash 

Vagrantfile и Dockerv работает хорошо. НО, у меня есть серьезная проблема в файле config.php Symfony 2.

Change the permissions of either "app/cache/" or "var/cache/" directory so that the web server can write into it. 
Change the permissions of either "app/logs/" or "var/logs/" directory so that the web server can write into it. 

Поскольку в Докер файлы контейнера проекта владельца 1001. Кто этот парень?

-rw-rw-r-- 1 1001 1001 1065 Oct 6 13:55 LICENSE 
-rw-rw-r-- 1 1001 1001 5732 Oct 6 13:55 README.md 
-rw-rw-r-- 1 1001 1001 1308 Oct 6 13:55 UPGRADE-2.2.md 
-rw-rw-r-- 1 1001 1001 1962 Oct 6 13:55 UPGRADE-2.3.md 
-rw-rw-r-- 1 1001 1001 356 Oct 6 13:55 UPGRADE-2.4.md 
-rw-rw-r-- 1 1001 1001 8499 Oct 6 13:55 UPGRADE.md 
drwxrwxr-x 1 1001 1001 4096 Nov 17 20:44 app 
drwxrwxr-x 1 1001 1001 4096 Nov 17 20:43 bin 
-rw-rw-r-- 1 1001 1001 2416 Oct 6 13:55 composer.json 
-rw-rw-r-- 1 1001 1001 56835 Nov 17 20:43 composer.lock 
-rw-r--r-- 1 1001 1001 19 Nov 20 13:49 index.php 
drwxrwxr-x 1 1001 1001 4096 Nov 17 21:33 nbproject 
drwxrwxr-x 1 1001 1001 4096 Nov 17 20:43 src 
drwxrwxr-x 1 1001 1001 4096 Nov 17 20:44 vendor 
drwxrwxr-x 1 1001 1001 4096 Nov 20 13:44 web 

Как я могу решить эту проблему? Команда chown и setfacl не работают ...

+1

Может подтвердить эту проблему, подумайте о ее докере. Имея аналогичную проблему, без бродяг. В основном я использую токи докеров, чтобы использовать код на моем локальном диске и запускать его с помощью nginx и php-fpm в контейнере. Я понял, что, в отличие от того, что я сначала думал, что данные на томе ntfs еще не изменились, я переместил его на том ext4 и использовал 'chown -R nginx: nginx/var/www' и 'chmod -R 0777/var/www/project/var/cache' Но ничего не дает мне такой же ошибки, хотя nginx владеет и имеет права на все файлы. – WiR3D

+1

Извините, долгое время ответа нет ... много работы. Я нашел решение, , но не уверен, что это правильно. Вы правы, эти проблемы - докеры. Я отправлю решение позже. –

+0

, пожалуйста, я застрял в этом, и это очень важно, это было 2 дня. – WiR3D

ответ

3

Я не использовал бродягу с докером, но у меня была проблема simliar с использованием бродяг и symfony. Я должен был настроить разрешения для журналов и директорий кэша в бродячей файле, так что-то вроде этого (гостя Ubuntu 14,04):

config.vm.synced_folder "symfony/app/cache", "/vagrant/symfony/app/cache", owner: "www-data", group: "vagrant", mount_options: ["dmode=775,fmode=664"] 
config.vm.synced_folder "symfony/app/logs", "/vagrant/symfony/app/logs", owner: "www-data", group: "vagrant", mount_options: ["dmode=775,fmode=664"] 

Это изменяет права доступа для этих каталогов, но как я уже сказал, я не уверен, как все это будет работать, используя докер. В любом случае это стоит того.

Следует также упомянуть, что в зависимости от вашей версии symfony каталоги могут быть/var/logs и/var/cache, поэтому дважды проверьте это.

2

Мое решение. В Dockerfile я прибавил:

RUN echo "1001:x:1001:1001::/home/1001:/bin/bash" >> /etc/passwd 
RUN echo "1001:x:1001:" >> /etc/group 

И это:

RUN echo "User 1001" >> /etc/apache2/httpd.conf 
RUN echo "Group 1001" >> /etc/apache2/httpd.conf 

Nginx и PHP-FPM работает от имени пользователя 1001. он решил мою проблему.

Смежные вопросы