在docker服务之间共享卷

时间:2017-02-11 15:08:12

标签: docker-compose dockerfile

我试图用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':没有此类文件或目录。

该目录存在,因为我在两个服务构建完成后都已检查过。

1 个答案:

答案 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