Назад | Перейти на главную страницу

Как установить зависимости npm и composer в приложение AWS Elasticbeanstalk Multi-Container Docker через Dockerfile?

Ожидаемый результат

Не могли бы вы посоветовать, как установить зависимости npm и composer в моем корневом веб-каталоге через Dockerfile в приложении AWS Elasticbeanstalk Multi-Container Docker?

Текущая ситуация

Я создавал свои файлы из контейнера докеров через Dockerfile с таким кодом:

// Dockerfile
...

# npm
WORKDIR /var/www/tmp_html
RUN mkdir -p npm
WORKDIR /var/www/tmp_html/npm
COPY php-app/package.json package.json
RUN npm update && npm install

# composer
... // similar to above

# Switch working directory back to webroot
WORKDIR /var/www/html

После развертывания, когда я подключаюсь по ssh к экземпляру php:fpm контейнер, я вижу следующую структуру:

root@3f8bf1xc2a78:/var/www# ls
html  tmp_html

Встроенные файлы находятся в / tmp_html, и я пытаюсь переместить их в / html. через мой Dockerfile вот так:

ONBUILD RUN mv -v ../tmp_html/composer/protected/vendor/* protected/vendor \
    && rm -rf ../tmp_html/composer/protected \
    && mv -v ../tmp_html/composer/* . \
    && mv -v ../tmp_html/npm/* . \
    && rm -rf ../tmp_html

Проблема

Проблема в том, что этап ONBUILD не работает. В Docker. Осмотрите контейнер php: fpm, я заметил следующее: «OnBuild»: null. Похоже, что onbuild даже не запустился. Файлы в /html и /tmp_html папки остаются прежними.

Кроме того, если я запускаю команды просто без команды ONBUILD, при отправке докеров в репозиторий образов докеров целевое местоположение не может быть обнаружено и отказывается разрешать мне запускать, поэтому я не могу даже развернуть. Ошибка: mv: target 'protected/vendor' is not a directory Я думаю, это связано с тем, что elasticbeanstalk не скопировал пакет, поэтому на данный момент папка html даже недоступна.

Остановитесь с временным каталогом. Скопируйте файлы в образ там, где они вам нужны, а затем при создании образа установите модули npm и модули композитора.

Не знаете, почему вы хотите, чтобы они были во временной папке, а затем переместили их?