我试图用docker-composer构建两个服务。第一个服务(应用程序)是一个简单的卷容器,第二个(php-pm)是一个PHP进程管理器。问题是我的第二个服务尝试访问由第一个服务共享的Symfony文件夹。由于某种原因,在创建两个服务之前,该文件夹不存在。
搬运工-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
第二个服务dockerfile
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
最后一个命令不起作用。 错误消息无法访问' / var / www / symfony-pm':没有此类文件或目录。
该目录存在,因为我在两个服务构建完成后都已检查过。
答案 0 :(得分:0)
该文件夹不存在,因为volumes_from
在您启动容器时安装目录。但是您在构建容器映像期间尝试访问它。
在构建期间,我要做的是COPY /home/Projects/symfony-pm
的内容:
COPY /home/Projects/symfony-pm /var/www/symfony-pm
RUN composer require ...
现在,每次更新应用时,都需要重建图像。
另一种可能性是使用ENTRYPOINT让<{1}}在容器启动时运行:
composer
:
entrypoint.sh
#!/bin/sh
cd /var/www/symfony-pm && composer ...
:
Dockerfile