简体   繁体   English

docker和composer安装

[英]docker and composer install

I am having problems with docker-compose getting php-fpm container up with composer install. 我遇到了docker-compose使用composer install获取php-fpm容器的问题。

I have folder structure like: 我有文件夹结构,如:

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

docker-compose.yml: 泊坞窗,compose.yml:

version: '3'

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

and in php-fpm/Dockerfile: 在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

With current ENTRYPOINT, it seems that composer install gets stuck at "Generating autoload files", because nothing after that is outputted and container does not appear in docker ps list. 使用当前的ENTRYPOINT,似乎作曲家安装卡在“生成自动加载文件”,因为之后没有输出任何内容并且容器没有出现在docker ps列表中。

How can I keep above folder structure, but still able to run composer install after build or run (in this case I would need to add if conditions)? 如何保持上面的文件夹结构,但仍然能够在构建或运行后运行composer install(在这种情况下,我需要添加if条件)?

The problem is that you need a composer.json. 问题是你需要一个composer.json。

Please, follow these steps: 请按照以下步骤操作:

  1. Go to Get composer web -> getting started and create a composer.json file. 转到获取作曲家web - >开始并创建composer.json文件。
  2. Put this composer.json file in your dir structure as follows, for example: 将此composer.json文件放在dir结构中,如下所示:

    • docker-compose.yml 泊坞窗,compose.yml
    • containers/ 集装箱/
      • nginx nginx的
        • Dockerfile Dockerfile
      • php-fpm PHP-FPM
        • Dockerfile Dockerfile
    • composer/ 作曲家/
      • composer.json composer.json
  3. Mount volume (modifying your docker-compose.yml file) to share composer.json to /var/www/html in php-fpm docker, because although you specify /srv/www/ as workdir, composer looks up in /var/www/html . 装载卷(修改你的docker-compose.yml文件)在php-fpm docker中将composer.json共享到/var/www/html ,因为虽然你指定/srv/www/ as workdir,但是composer在/var/www/html查找/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

I hope it's useful for you. 我希望它对你有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM