Для установки Composer в контейнере Docker, вам понадобится следующий Dockerfile:
FROM php:7.4-cli RUN apt-get update && apt-get install -y git unzip RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer WORKDIR /app COPY composer.json composer.lock ./ RUN composer install --prefer-dist --no-scripts --no-autoloader COPY . . RUN composer dump-autoload --optimize --no-dev --classmap-authoritative CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
Давайте посмотрим на этот Dockerfile по шагам:
1. Мы использовали базовый образ php:7.4-cli
, который включает в себя PHP и CLI-инструменты.
2. Мы обновляем пакетный менеджер apt-get
и устанавливаем необходимые зависимости - git
и unzip
.
3. Затем мы используем curl
для загрузки установщика Composer и выполняем его с помощью PHP. Мы устанавливаем Composer в /usr/local/bin
и называем его composer
.
4. Мы создаем рабочую директорию /app
, где будут размещаться наши файлы проекта.
5. Мы копируем файлы composer.json
и composer.lock
в контейнер. Затем мы выполняем команду composer install --prefer-dist --no-scripts --no-autoloader
, чтобы установить зависимости, предпочитая сжатые архивы, и пропускаем выполнение скриптов и автозагрузчика.
6. Мы копируем все остальные файлы проекта в контейнер.
7. Затем мы выполняем команду composer dump-autoload --optimize --no-dev --classmap-authoritative
, чтобы оптимизировать автозагрузчик, исключить зависимости разработки и использовать полный набор classmap.
8. Наконец, мы настраиваем команду php artisan serve
в качестве команды по умолчанию для контейнера, чтобы запустить сервер Laravel на порту 8000 и привязать его к 0.0.0.0
, чтобы он был доступен извне контейнера.
Чтобы собрать и запустить контейнер с этим Dockerfile, вам потребуется выполнить следующие команды в терминале:
docker build -t myapp . docker run -p 8000:8000 myapp
Первая команда (docker build -t myapp .
) собирает образ Docker с именем myapp
. Здесь .
представляет текущий каталог, в котором находится Dockerfile.
Вторая команда (docker run -p 8000:8000 myapp
) запускает контейнер на порту 8000 и привязывает его к порту 8000 на вашей машине. Вы можете использовать любой другой доступный порт.
Теперь вы должны увидеть ваше приложение, работающее в контейнере Docker с установленным Composer'ом.