2017-02-12 14 views
0

Моя заявка основана на Laravel рамках, и мне нужно, чтобы построить Docker контейнер с этими спецификациями:Docker контейнер для Laravel: PHP 7.x на CentOS 7.x

  • CentOS/RHEL 7.x
  • PHP 7.x
  • PHP расширения:
    • OpenSSL
    • PDO
    • MBstring
    • Tokenizer
    • XML

Но проблемы:

  • Официальный PHP изображение на DockerHub основано на Ubuntu, но я скорее, PHP на RHEL/CentOS вместо Ubuntu.
  • Последняя версия PHP на официальных репозиториях CentOS в CentOS: 5.4.16, которая ниже версии, требуемой Laravel. На основе distrowatch.com кажется, что RHEL по-прежнему имеет ту же самую старую версию PHP в своих хранилищах.
  • Я не могу доверять неофициальным изображениям, поэтому решение должно основываться только на официальных изображениях.
  • Я хочу использовать этот контейнер в своей рабочей среде, поэтому предпочитаю полагаться на доверенные ресурсы вместо сторонних репозиториев, таких как Webtatic.

Есть ли способ иметь последнюю версию PHP на контейнере Docker на основе CentOS? Например, можно ли сделать изображение на основе как CentOS, так и PHP официальных изображений?


Извините, если мой вопрос звучит глупо, я еще новичок в Докер и после прочтения документов, а также ряд статей в Интернете я не нашел мой ответ еще.

+0

Сначала вы можете вывести официальное изображение CentOS, а поверх него вы можете установить php 7 и другие php-библиотеки, используя yum. Затем вы можете зафиксировать полученный контейнер как новое изображение и использовать его для своей цели. – Gayan

+0

Благодарим вас за быстрый ответ. Проблема в том, что самая высокая доступная версия PHP для официальных репозиториев RHEL/CentOS Yum составляет 5.4.16. Эти пакеты можно установить, добавив репозиторий Webtatic или компиляцию из источника, но это не должно быть безопасным для производства. –

ответ

1

Я выполнил следующие шаги и успешно создал CentOS изображение с php 7.0.

Снимите и запустите изображение CentOS с интерактивным режимом.

docker run -it centos 

Я последовал за эти действия, описанные в webtatic для установки php7.Для того, чтобы установить, во-первых вы должны добавить Webtatic EL ням информацию о хранилище, соответствующий вашей версии CentOS/RHEL к Yum

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 

Для установки PHP 7

yum install php70w php70w-opcache 

Установка пакетов с помощью

yum install OpenSSL PDO Mbstring Tokenizer xml zip unzip curl 

Я также добавил zip unzip curl, поскольку они необходимы для установки композитора.

Выйдите из контейнера, набрав exit и перечислив доступные контейнеры.

docker ps -a 

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

docker commit -m "setup centos image with php7.0 and composer" -a "Your Name" 2b252ba66277 yourname/centos-php7.0-composer 

список доступных изображений, и вы увидите только что созданное изображение.

docker image ls 

Запуск вновь созданного образа

docker run -it yourname/centos-php7.0-composer 

Редактировать

Вы также можете потянуть вниз gayansanjeewa/centos-php7.0-composer, которые я создал с этими шагами.

+0

Спасибо за ваш ответ. Я хочу использовать этот контейнер Docker в своей производственной среде, поэтому я скорее полагаюсь на официальный пакет из надежного источника. Есть ли другое решение, кроме использования сторонних репозиториев, таких как Webtatic? –

+0

Кажется, что на данный момент это невозможно, так как php7 еще не поддерживается centos. Я googled еще несколько, и результат такой же. В этом случае вы можете использовать изображение, например Ubuntu, или получить поддержку стороннего пакета. – Gayan

+0

Спасибо, так что, похоже, нет возможности добавить два изображения и создать новый. Например, есть ли способ сделать изображение, основанное на официальных изображениях PHP и CentOS на Docker Hub? –