docker和composer安装

时间:2017-06-10 05:35:18

标签: docker composer-php docker-compose

我遇到了docker-compose使用composer install获取php-fpm容器的问题。

我的文件夹结构如下:

docker-compose.yml
containers/
    nginx
        Dockerfile
    php-fpm
        Dockerfile

搬运工-compose.yml:

version: '3'

services:
    nginx:
        build:
            context: ./containers/nginx
        ports:
            - 80:80
    php-fpm:
        build:
            context: ./containers/php-fpm
        tty: true

并在php-fpm / Dockerfile中:

FROM php:7.1.5-fpm-alpine

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

WORKDIR /srv/www

ENTRYPOINT composer install --prefer-source --no-interaction --no-autoloader

使用当前的ENTRYPOINT,似乎作曲家安装卡在&#34;生成自动加载文件&#34;,因为之后没有输出任何内容并且容器没有出现在 docker ps 列表中。< / p>

如何保持上面的文件夹结构,但仍然可以在构建或运行后运行composer install(在这种情况下,我需要添加if条件)?

1 个答案:

答案 0 :(得分:0)

问题是您需要composer.json。

请按照以下步骤操作:

  1. 转到Get composer web -> getting started并创建一个composer.json文件。
  2. 将此composer.json文件放入您的dir结构中,如下所示:

    • docker-compose.yml
    • 容器/
      • nginx
        • Dockerfile
      • php-fpm
        • Dockerfile
    • 撰写者/
      • composer.json
  3. 挂载卷(修改docker-compose.yml文件)以将composer.json共享到/var/www/html泊坞中的php-fpm,因为尽管您将/srv/www/指定为workdir,composer在/var/www/html中查找。

    version: '3'

    services:
        nginx:
            build:
                context: ./containers/nginx
            ports:
                - "80:80"
        php-fpm:
            build:
                context: ./containers/php-fpm
            tty: true
            volumes:
                - ./composer/composer.json:/var/www/html/composer.json

我希望它对您有用。