#php #laravel #docker #dockerfile #debian
#php #ларавель #докер #докерфайл #дистрибутив debian
Вопрос:
Привет, у меня проблема с запуском Dockerfile в Debian S390x. Когда я использую команду:
docker build -t laravel .
У меня есть информация об ошибке:
Composer could not find a composer.json file in /app To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage
Мой Док-файл:
FROM php:7.4 RUN apt-get update -y amp;amp; apt-get install -y openssl zip unzip git RUN apt-get install libonig-dev RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN docker-php-ext-install pdo mbstring WORKDIR /app COPY . /app RUN composer install CMD php artisan serve --host=0.0.0.0 --port=8181 EXPOSE 8181
Пожалуйста, помогите
Комментарии:
1. Можете ли вы поделиться содержимым каталога, в котором вы
Dockerfile
живете ? ошибка, очевидно, заключается в том, что докер жалуется на отсутствиеcomposer.json
файла при запуске composer install.2. root@zDEB:/home/test/Laravel# ls Докер-файл
3. есть ли
composer.json
файл в каталоге, который вы копируетеCOPY . /app
? это должен быть, например, действительный проект laravel. таким образом, он копирует все файлы, включаяcomposer.json
и т. Д4. Я понимаю, что я должен поместить его в свой файл container composer.json, потому что я должен установить требования для своего проекта
5. Да, я ошибаюсь, я думал, что получу прозрачный контейнер с laravel, но я должен поместить в него свое приложение, чтобы запустить все, спасибо за помощь ;3
Ответ №1:
Вы копируете его не в тот каталог по адресу:
COPY . /app
Потому что ранее вы определили рабочий код:
WORKDIR /app
Теперь содержимое будет скопировано в:
/app/app
Поэтому измените COPY
на текущий каталог, потому что вы уже находитесь в /app
:
COPY . .
Комментарии:
1. Если местом назначения
COPY
команды является абсолютный путь, файлы будут скопированы туда, игнорируяWORKDIR
; то же самое, как если бы выcp composer.json /app
работали в родном Linux. (Источник всегда находится относительно каталога контекста сборки, даже если он выглядит как абсолютный путь.)