docker wordpress php ini

Как поднять проект на PHP в Docker под Windows

Чем является статья

Статья является набором простых, понятных инструкций и советов для пользователей Docker под Windows. Статья поможет разработчикам на PHP быстро поднять проект. Описываются проблемы и их решения. Статья полезна тем, кто не обладает бесконечным ресурсом времени, чтобы глубоко копаться в проблемах докера под Windows. Автор был бы бесконечно признателен, если бы ему ранее встретилась подобная статья и автор бы съэкономил бы много сил и времени. Текст может содержать ошибки и неточности.

Чем не является статья

Статья не является полным и исчерпывающим руководством по Docker for Windows. В статье не описывается ничего нового и не разглашаются ранее неизвестные факты — все это вы можете самостоятельно найти в разных источниках. Статья также не отвечает на вопрос — перешел ли цыпленок дорогу.

Первый шаг — добавить нового администратора в систему

Это важный шаг, если вы его пропустите или не выполните, то возможно нижеследующие инструкции вообще не имеют смысла для вас. Выполните Windows+R, lusrmgr.msc, откроется «Локальные пользователи и группы». Далее пользователи, контекстное меню, в нем «Новый пользователь. «. Добавьте нового пользователя (например dockerhost) с обязательным паролем. Пароль является обязательным! Добавьте членство в группе Администраторы. Других групп не добавляйте.

Далее в Docker settings, Shared drivers отметьте нужные вам диски и введите данные (логин и пароль) нового пользователя. Сохраните настройки. Если вы ранее вводили логин и пароль пользователя, под которым работаете, то введите данные нового пользователя. Хотите огрести проблем в неожиданном месте — используйте рабочий аккаунт и дальше статью не читайте.

С какой конфигурации начать?

На просторах интернета встречаются всякие конфиги docker-compose.yml для PHP вэбсервера. Какая то их часть не запуститься под Windows. Я рекомендую посмотреть генератор docker-compose.yml. У меня конфиг из генератора завелся сразу и поэтому далее я редактировал конфиг именно оттуда. Окончательный результат выложил в github. Вариант из генератора плох несколькими вещами. Описание проблемы и ее решения приводятся ниже.

Настройка постоянного хранилища БД

Проблема: невозможно хранить файлы БД на локальном диске. Это следует принять как аксиому под Windows и попытаться найти приемлемое решение, чтобы данные хранились вне контейнера. Для Windows это — named volume. Всего пара строк решает эту проблему

Named volume находятся в папке /var/lib/docker/volumes/ виртуальной машины докера MobiLinuxVM. Прямого доступа к этим файлам нет, только через контейнер посредник. Мне неизвестно решение, как сделать доступной эту папку из под Windows. Для управления named томами воспользуйтесь коммандой docker volume. Например удалить не используемые тома docker volume prune.

Вам не нужно парится с правами и пользователями для файлов в named volume — за вас все делает докер, за что ему большое спасибо. В некоторых руководствах, по настройке постоянного хранилища БД в докере, приводятся танцы с назначением прав. Под Windows без named volume у вас ничего не выйдет. Ну первый раз может и запуститься, а вот при повторном запуске загнется. Вы даже не представляете, какое было облегчение когда заработало постоянное хранилище с named volume.

Добавление SSH ключей

SSh ключи также добавим через named volume. Причина — для приватных ключей нужны особые права, а эту возножность не дают обычные тома под Windows.Процитирую требуемый кусок из docker-compose.yml

Чтобы это заработало необходимо в named volume скопировать ключи, изменить права на приватные ключи, протестировать связь. Все эти действия можно оформить в виде одного bat файла

Сетевое взаимодействие между контейнерами

Чтобы соеденятся между контейнерами, описанными в одном docker-compose.yml файле, ничего ненужно. Достаточно указать имя сервиса или имя контейнера как имя хоста. Номера портов менять не нужно — работают порты по умолчанию. На этом можно было бы закончить, если бы не требовалось получать и отправлять запросы в контенйеры из другого docker-compose.yml. С этим тоже никаких проблем, достаточно указать название сетей и контейнеров в сети. Процитирую нужный участок docker-compose.yml

При первом запуске контейнеров докер может ругнуться. ERROR: Network second_network declared as external, but could not be found. Please create the network manually using docker network create second_default and try again. Собственно, все верно, воспользуйтесь подсказкой докера и вручную создайте сеть.

Настройка логов

Хотелось бы иметь логи от всех сервисов в одной папке, доступной локально. Делается это несложно при помощи обычных томов. Главное — включить логирование в самом сервисе. Для php — это опции в файле php.ini, в nginx — в его конфиге, в postgres — тоже. С php и nginx все просто — имеются соответствующие файлы в нашем конфиге. Для postgres придется воспользоваться опциями коммандной строки (существует еще путь через файл postgresql.conf, но это будет несколько сложнее)

Полный текст docker-compose.yml в репе и в конце статьи. Надо сказать, что я до сих пор не доволен настройкой логов. Пока устраивает как есть. Желающие более тонкой настройки логирования, могут воспользоваться документацией соответствующих сервисов.

Образы контейнеров

Если обратили внимание, то я для php и nginx использовал свои собственные образы. Мне это экономило время при тестировании. Вам ничего не мешает использовать другие образы контейнеров — мой конфиг всего лишь демо. Свои образы легко построить — в посмотите в репе папку build, где создаются использованные образы.

Заключение

Приведу здесь финальный вариант docker-compose.yml если кому то лень лезь в реп:

Как видите, ничего сложного и все работает. Также приведу несколько полезных комманд, которые я оформил в виде bat файлов. Запуск тестов codeception

После этой статьи, возникшие вопросы в состоянии решить официальная документация по докеру или другим использованным компонентам. На этом все, удачи в разработке.

Источник

Быстрая установка и запуск WordPress в Docker с HTTPS

docker wordpress php ini

Некоторое время назад я писал статью про быстрое разворачивание окружения под WordPress, а так же саму установку CMS. В ней был акцент на разработку, поэтому не было простого способа запустить сайт сразу на https. Я решил пойти дальше и полностью автоматизировать установку wordpress в docker с https, чтобы можно было сразу развернуть на vps и показать в рабочем варианте. Пришлось немного доработать предыдущий вариант, добавив туда контейнер с nginx и let’s encrypt.

docker wordpress php ini

Введение

Сразу скажу, что мной двигала лень самостоятельной настройки всего этого хозяйства. В связи с этим я искал готовые контейнеры, которым можно было бы доверять и не заботиться об их обновлении и поддержке. На долю секунды у меня возникла мысль собрать контейнеры самостоятельно, но я ее быстро отбросил 🙂 Тогда мне было бы проще и быстрее настраивать все без докера банальным башем или ансиблом.

Подготовка конфигов

Далее я подготовил конфиг configure-wp.sh для установки и первоначальной настройки wordpress с помощью инструмента wp-cli, который запускается в отдельном контейнере. После того, как он все выполнит, завершает свою работу.

Здесь надо не забыть поменять имя сайта, а так же указать учетную запись для администратора, его email.

Подготовка окончена, можно переходить к непосредственно установке wordpress через docker.

Запуск wordpress в docker с https

Жирным я выделил то, что вам нужно заменить на свои значения. Сохраняем конфиг и запускаем docker-compose:

Наблюдаем в консоли запуск нашего проекта на wordpress с помощью docker контейнеров. Если все в порядке, то последним вы должны у видеть примерно следующее.

docker wordpress php ini

Успешный выпуск tls сертификата lert’s encrypt будет выглядеть в логах вот так.

docker wordpress php ini

Можно сходить по адресу сайта и убедиться, что все работает.

docker wordpress php ini

Ваша рабочая директория со скриптами и исходниками будет выглядеть следующим образом.

docker wordpress php ini

Можете все это забэкапить или положить в git, настроив исключение для директории с базой. Ее можно дампить отдельно и как-то сохранять. При желании можно в тот же git класть, если она не очень большая.

Бэкап wordpress в docker

Источник

can’t update php.ini file in Docker container

I’m trying to set Magento2 on Docker with Nginx & PHP7.

I’ve added a custom php.ini file as recommended by the PHP7 Docker image. I can see from phpinfo.php that it’s loading my php.ini file but none of my updates are there. docker wordpress php ini docker wordpress php ini docker wordpress php ini

I’ve checked the PHP container and I can see the php.ini file is there with the correct settings, or so I think?

What am I doing wrong? Below are some more details, thanks in advance!

Docker Project

docker-compose.yml

php/Dockerfile

UPDATE

I’ve tried restarting nginx with the below, but it did not work.

docker wordpress php ini

3 Answers 3

Add a volumes: section to your php service in the docker-compose.yml file, map a local directory with a custom.ini file to /usr/local/etc/php/conf.d, and restart your container. Whatever valid settings in that file will override those from the main php.ini file. (Incidentally you can do the same with MySQL but not with Nginx).

This works in my own project:

i think you have to reload the nginx config. i dont know which OS your php container uses, but try inside of the container some of these:

my logical reason is, that you install php ( and start it at the same time ) and after all you copy the new config.

Источник

Setting up Xdebug with Docker Compose and WordPress image

I am trying to set up Xdebug with docker-compose. I’m using PhpStorm IDE and the Docker image I’m using installs PHP 7.2. I’m trying to do this within the context of this WordPress image. Here is my current docker-compose.yml file:

Then my Dockerfile which I have tagged as web-build-scripts (and built of course) looks like this:

Where my xdebug.ini file that is within my docker-config directory locally looks like so:

Within PHPStorm I have set the debug settings like so: docker wordpress php ini And I have set up the server mapping like so: docker wordpress php ini

I have also set the Debug Port to 9001 as I did in my xdebug.ini file: docker wordpress php ini

I’ve gone through several tutorials and haven’t been able to figure this out. Anyone hav any insights that may help me?

2 Answers 2

This is how my docker-compose file looks like

Please note that version 3 of XDebug has introduced a fair amount of config name changes that are not backwards compatible. There’s an upgrade guide available. You’ll find that various config keys have changed, including ones that are vital in running XDebug from a Docker container.

I’m using the official WordPress Docker image just as you are, and it took a while to dig up the reason why suddenly xdebug.remote_host doesn’t work anymore, and why my logs aren’t showing up. It’s all in the upgrade guide.

This is a basic config that works for me, when using VS Code with felixbecker’s XDebug extension.

Источник

Локальная среда для PHP разработки с помощью Docker

docker wordpress php ini

В этой статье описывается как собрать минимальную локальную среду для разработки на PHP используя Docker (Докер) и Docker-compose.

Здесь мы не будем изучать «Что такое Docker и как его установить?», подробная инструкция есть на официальном сайте.

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов.

Для чего?

Многие веб разработчики используют в своей работе такие «сборки» как OpenServer, XAMMP и подобные. Для простых зачать, типа создания блога на Вордресс, использование такой сборки вполне допустимо и позволяет выполнить все задачи. В OpenServer даже есть возможность менять версию PHP, MySQL, Apache.

Но иногда возникает необходимость быстро поднять идентичную среду разработки на другом компьютере для вашего коллеги или добавить к среде разработки определенную версию Node.js, или Redis, как быть в этом случае? Тут нам и поможет Докер.

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

В нашей среде для разработки будут следующие компоненты:

В будущем добавить/убрать/изменить любой компонент очень просто с помощью конфигурационных файлов Docker и Docker-compose.

Приступаем

Создадим основную папку, например docker-lamp, которая будет корневой, а внутри создадим следующую структуру:

sites — тут будут лежать наши проекты

data
mysql — тут будут храниться файлы наших баз данных
logs — сюда будут записываться все логи

config
php — все настройки контейнера и php.ini
nginx — — все настройки контейнера и конфигурационные файлы

docker wordpress php ini

Создаем в корневой папке файл docker-compose.yml и добавим в него следующее содержание (я постарался его прокомментировать чтобы не возникало вопросов):

Образы nginx и mysql прекрасно работают из коробки, а вот официальный образ php совсем пустой и в него не включены никакие расширения, еще мы хотели чтобы в нашей среде разработки был Composer.

Php.ini пока оставим пустым, если нам понадобиться в будущем настраивать PHP то воспользуемся им, а пока добавим в Dockerfile следующий код:

Теперь в папке sites для теста создадим тестовый проект Hello, для этого создадим папку hello и поместим туда единственный файл index.php который будет выводить информацию о php:

Остается только сконфигурировать NGINX, для этого добавим в /config/nginx файл hello.conf:

Не забываем в файле HOSTS добавить:

Запускаем терминал, переходим в нашу папку и запускаем команду:

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

docker wordpress php ini

Если при сборке не было никаких ошибок:

docker wordpress php ini

Переходим по адресу http://hello.loc/ и видим, что все работает.

docker wordpress php ini

Можно зайти в Docker-контейнер php и запустить bash, и проверить работает ли git и composer, для этого введем команду:

docker wordpress php ini

Завершаем работу командой:

Мы разобрали один из вариантов конфигурации, вы все можете настроить под себя. Может показаться, что это сложно и тратиться много времени, но настроив все один раз, вы и коллеги будите использовать это постоянно, разворачивая всю среду разработки одной строкой.

В начале я написал что в сборке будет присутствовать phpМyAdmin но, как вы заметили, его нет. Для тренировки попробуйте добавить его сами, а если не получится, то позже подготовлю инструкцию.

На Windows 10 у меня возникла ошибка при запуске контейнера MySQL, в логах было что то такое:

…..
[Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
…..

Гугление показало — это означает, что используемая файловая система не поддерживает aio. Для этого в docker-compose добавим команду:

В статье, в описание файла docker-compose, я это добавил.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *