docker 和 composer 安装

R.P*_*R.P 5 composer-php docker docker-compose

我在使用 docker-compose 安装 php-fpm 容器时遇到了问题。

我的文件夹结构如下:

docker-compose.yml
containers/
    nginx
        Dockerfile
    php-fpm
        Dockerfile
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '3'

services:
    nginx:
        build:
            context: ./containers/nginx
        ports:
            - 80:80
    php-fpm:
        build:
            context: ./containers/php-fpm
        tty: true
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

使用当前的 ENTRYPOINT,似乎 composer install 卡在“生成自动加载文件”上,因为之后没有任何输出并且容器没有出现在docker ps列表中。

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

mul*_*g0r -2

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

请按照以下步骤操作:

  1. 转到获取composer web -> 开始并创建composer.json 文件。
  2. 将此composer.json文件放入您的目录结构中,如下所示:

    • docker-compose.yml
    • 集装箱/
      • nginx
        • Dockerfile
      • php-fpm
        • Dockerfile
    • 作曲家/
      • 作曲家.json
  3. 挂载卷(修改您的 docker-compose.yml 文件)以将composer.json共享到docker/var/www/htmlphp-fpm,因为尽管您指定/srv/www/为workdir,但composer会在.json中查找/var/www/html

    版本:'3'

    服务:
        nginx:
            建造:
                上下文:./containers/nginx
            端口:
                - “80:80”
        PHP-FPM:
            建造:
                上下文:./containers/php-fpm
            蒂:正确
            卷:
                - ./composer/composer.json:/var/www/html/composer.json

我希望它对你有用。