首页 文章

docker和composer安装

提问于
浏览
4

我遇到了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,似乎作曲家安装卡在"Generating autoload files",因为之后没有输出任何内容并且容器没有出现在 docker ps 列表中 .

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

1 回答

  • 0

    问题是你需要一个composer.json .

    请按照以下步骤操作:

    • 转到Get composer web -> getting started并创建composer.json文件 .

    • 将此 composer.json 文件放在dir结构中,如下所示:

    • docker-compose.yml

    • 个容器/

    • nginx

    • Dockerfile

    • php-fpm

    • Dockerfile

    • composer/

    • composer.json

    • 装载卷(修改docker-compose.yml文件)以在 php-fpm docker中将composer.json共享为 /var/www/html ,因为虽然您将 /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
    

    我希望它对你有用 .

相关问题