2017-02-11 2 views
0

도커 - 작성자로 두 가지 서비스를 빌드하려고합니다. 첫 번째 서비스 (응용 프로그램)는 단순한 볼륨 컨테이너이고 두 번째 (php-pm)는 PHP 프로세스 관리자입니다. 문제는 내 두 번째 서비스가 첫 번째 서비스에서 공유하는 Symfony 폴더에 액세스하려고한다는 것입니다. 어떤 이유로 두 서비스가 모두 만들어 질 때까지 폴더가 존재하지 않습니다. 마지막 명령이 작동하지 않습니다도커 서비스간에 볼륨 공유

FROM ubuntu:16.04 

#INSTALL PHP AND HIS DEPENDENCIES 
RUN apt-get update && \ 
    apt-get install -y php7.0-cgi php-xml && \ 
    ln -s /usr/lib/cgi-bin/php /usr/bin/php7.0-cgi 

#INSTALL COMPOSER 
RUN apt-get install -y curl && \ 
    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \ 
    chmod +x /usr/local/bin/composer 

#INSTALL PPM 
RUN apt-get install -y git && \ 
    cd var && \ 
    git clone https://github.com/php-pm/php-pm.git && \ 
    cd php-pm && \ 
    composer install && \ 
    ln -s `pwd`/bin/ppm /usr/local/bin/ppm 


#This folder doesn't exist, why?? 
RUN cd /var/www/symfony-pm &&/
    composer require php-pm/php-pm:dev-master &&/
    composer require php-pm/httpkernel-adapter:dev-master &&/
    composer install 

dockerfile

고정 표시기 - compose.yml

application: 
    image: tianon/true 
    volumes: 
     - /home/Projects/symfony-pm:/var/www/symfony-pm 
     - /home/Projects/symfony-pm/app/logs:/var/www/symfony-pm/app/logs 
php-pm: 
    build: ./ 
    dockerfile: dockerfile-php-pm 
    ports: 
     - 9999:9000 
    volumes_from: 
     - application 
    stdin_open: true 
    tty: true 

초 서비스를 제공합니다. 오류 메시지는 '/ var/www/symfony-pm'에 액세스 할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다.

서비스가 구축 된 후 확인했기 때문에 디렉토리가 존재합니다.

+0

입니다

또 다른 가능성은 ENTRYPOINT 사용하여 컨테이너 시작시 composer 실행하는 것입니다? –

답변

0

volumes_from은 컨테이너를 시작할 때 폴더를 탑재하기 때문에 폴더가 존재하지 않습니다. 그러나 컨테이너 이미지를 빌드하는 동안 액세스하려고합니다.

는 내가 뭘 할 것은 COPY입니다 빌드 시간 동안 /home/Projects/symfony-pm의 내용 :

COPY /home/Projects/symfony-pm /var/www/symfony-pm 
RUN composer require ... 

이제 때마다 앱을 사용하면 이미지를 다시해야 업데이트합니다.

entrypoint.sh :

#!/bin/sh 
cd /var/www/symfony-pm && composer ... 

Dockerfile : 당신의 dockerfile이

COPY entrypoint.sh/
ENTRYPOINT /entrypoint.sh 
관련 문제