Composer установить с помощью dockerfile - PullRequest
0 голосов
/ 05 сентября 2018

Я довольно новичок в docker, я пытаюсь автоматически выполнить установку composer в моем Dockerfile, но кажется, что я не могу войти в мое приложение во время установки, что не так? Или, может быть, есть другой лучший способ сделать это?

мой докер-compose.yml

version: "3.1"
services:

    app:
      image: nginx:alpine
      container_name: app
      working_dir: /application
      volumes:
          - ./Projects/app:/application/app
          - ./Docker/nginx/app.conf:/etc/nginx/conf.d/app.conf
      ports:
          - "8080:8080"

    php-fpm-app:
      build: Docker/php-fpm-app
      container_name: php-fpm-app
      working_dir: /application
      volumes:
          - ./Projects:/application
          - ./Docker/php-fpm-app/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini

мой Dockerfile

FROM phpdockerio/php72-fpm:latest
WORKDIR "/application"

# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive

RUN mkdir -p /var/www/.composer \
    && chown -R www-data:www-data /var/www/.composer

USER www-data

RUN cd /application/app; composer install

Вывод после запуска этой команды:

docker-compose up -d

Step 6/6 : RUN cd /application/app; composer install
 ---> Running in ac53e653af46
/bin/sh: 1: cd: can't cd to /application/app
Composer could not find a composer.json file in /application
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
ERROR: Service 'php-fpm-app' failed to build: The command '/bin/sh -c cd /application/app; composer install' returned a non-zero code: 1

Если я попытаюсь удалить последнюю строку из моего Dockerfile, после запуска и запуска этой команды:

docker-compose exec --user www-data php-fpm-app bash -c 'cd / application / app && composer install '

Это работает, я не понимаю, почему я не могу сделать это с моим Dockerfile.

=========================== Наконец Я нахожу способ выполнить сценарий, но не вижу выходных данных, поэтому, если сценарий длится много секунд / минут, я не буду знать, когда он будет выполнен.

ADD ./setup.sh /setup.sh
RUN chmod +x /setup.sh
CMD ["sh", "/setup.sh"]

Я решил выполнить этот скрипт вручную, как только он будет запущен

sh ./setup.sh

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Я думаю, что вам не хватает следующего шага:

COPY composer.json ./

Попробуйте поставить до composer install

0 голосов
/ 05 сентября 2018

Ссылка на Документацию для Dockerfiles , вам нужно отредактировать ваш Dockerfile.

должно быть:

WORKDIR /application/app
RUN composer install

Устраняет ли это вашу проблему?

...