Я борюсь с Докером.
Я пытаюсь создать образ для работы над проектом symfony и одновременно изучить Docker. Вот мой файл Dockerfile:
FROM php:7-apache
LABEL Description = "This image is used to start Symfony3 project"
ENV DIRPATH /var/www/html
# apt-get command
RUN apt-get update && apt-get install -y \
vim \
git \
&& apt-get clean
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
# Install the Symfony Installer
RUN curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
RUN chmod a+x /usr/local/bin/symfony
Я создаю изображение с помощью команды:
docker build -t symfony .
Работает хорошо! Круто!
Я создаю контейнер с:
docker run --name symfony -d -v "$PWD":/var/www/html -p 80:80 symfony
Хорошо работает. Веб-сервер работает на хорошем порту.
Я могу зайти в контейнер:
docker exec -ti symfony bash
Но когда я пытаюсь сделать обновление для композитора, у меня есть некоторые ошибки:
Failed to download symfony/symfony from dist: Could not decompress the archive, enable the PHP zip extension.
A php.ini file does not exist. You will have to create one.
Как я могу создать php.ini в Dockerfile?
Я также думаю, что у меня есть проблема с разрешением. Когда я пытаюсь использовать web/app_dev.php, у меня есть это сообщение:
You are not allowed to access this file. Check app_dev.php for more information.
Вы можете добавить специальную конфигурацию php.ini
задающую ее в файле dockerfile. В качестве примера вы можете посмотреть это репо для этого примера:
dokerfile
# install a few more PHP extensions
RUN apt-get update && apt-get install -y php5-imagick php5-gd php5-mongo php5-curl php5-mcrypt php5-intl
# copy a custom config file from the directory where this Dockerfile resides to the image
COPY php.ini /etc/php5/fpm/php.ini
Вы можете найти различный подход и различные образцы в сети.
Надеюсь, что эта помощь
Рядом с отсутствующим файлом php.ini
вы также должны установить zip, чтобы вы могли скачать с dist, т.е.
RUN docker-php-ext-install zip
Который установит и включит расширение PHP zip, которое запрашивается в вашем сообщении об ошибке.
php.ini
вweb/
папку, чтобы перезаписать php.ini по умолчанию. В вашем случае вы проверяли расширение zip? Попробуйте запуститьphp -m | grep zip
чтобы проверить, что у вас установлен zip.