Базовая среда стека LAMP, созданная с помощью Docker Compose. Он состоит из следующего:
На данный момент у нас есть несколько разных версий PHP. При необходимости используйте соответствующую версию PHP:
docker compose up -d
. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
Ваша стопка LAMP готова! Вы можете получить к нему доступ через http://localhost
.
Этот Docker Stack создан для локальной разработки, а не для использования в производстве.
Этот пакет поставляется с параметрами конфигурации по умолчанию. Вы можете изменить их, создав файл .env
в корневом каталоге. Чтобы упростить задачу, просто скопируйте содержимое из файла sample.env
и обновите значения переменных среды в соответствии с вашими потребностями.
Доступны следующие переменные конфигурации, и вы можете настроить их, перезаписав свой собственный файл .env
.
PHPVERSION используется для указания версии PHP, которую вы хотите использовать. По умолчанию всегда используется последняя версия PHP.
PHP_INI Определите собственную модификацию php.ini
в соответствии с вашими требованиями.
ДОКУМЕНТ_ROOT
Это корень документа для сервера Apache. Значением по умолчанию для этого является ./www
. Все ваши сайты попадут сюда и будут автоматически синхронизированы.
APACHE_DOCUMENT_ROOT
Значение файла конфигурации Apache. Значением по умолчанию для этого является /var/www/html.
VHOSTS_DIR
Это для виртуальных хостов. Значением по умолчанию для этого является ./config/vhosts
. Здесь вы можете разместить файлы конфигурации ваших виртуальных хостов.
Обязательно добавьте запись в файл
hosts
вашей системы для каждого виртуального хоста.
APACHE_LOG_DIR
Он будет использоваться для хранения журналов Apache. Значением по умолчанию для этого является ./logs/apache2
.
Для пользователей Apple Silicon: выберите Mariadb в качестве базы данных. Oracle не создает свои SQL-контейнеры для архитектуры Arm.
БАЗА ДАННЫХ
Определите, какую версию MySQL или MariaDB вы хотите использовать.
MYSQL_INITDB_DIR
При первом запуске контейнера файлы в этом каталоге с расширениями .sh
, .sql
, .sql.gz
и .sql.xz
будут выполняться в алфавитном порядке. Файлы .sh
без разрешения на выполнение файла создаются, а не выполняются. Значением по умолчанию для этого является ./config/initdb
.
MYSQL_DATA_DIR
Это каталог данных MySQL. Значением по умолчанию для этого является ./data/mysql
. Здесь будут храниться все ваши файлы данных MySQL.
MYSQL_LOG_DIR
Он будет использоваться для хранения журналов Apache. Значением по умолчанию для этого является ./logs/mysql
.
Apache настроен для работы на порту 80. Таким образом, вы можете получить к нему доступ через http://localhost
.
По умолчанию включены следующие модули.
Если вы хотите включить больше модулей, просто обновите
./bin/phpX/Dockerfile
. Вы также можете создать PR, и мы объединим его, если это подойдет для общих целей. Вам необходимо пересобрать образ Docker, запустивdocker compose build
и перезапустив контейнеры Docker.
Вы можете подключиться к веб-серверу с помощью команды docker compose exec
для выполнения на нем различных операций. Используйте команду ниже для входа в контейнер через ssh.
docker compose exec webserver bash
Установленная версия php зависит от вашего файла .env
.
По умолчанию установлены следующие расширения. Может отличаться для версий PHP <7.xx
Если вы хотите установить дополнительные расширения, просто обновите
./bin/webserver/Dockerfile
. Вы также можете создать PR, и мы объединим его, если он подойдет для общих целей. Вам необходимо пересобрать образ Docker, запустивdocker compose build
и перезапустив контейнеры Docker.
phpMyAdmin настроен для работы на порту 8080. Используйте следующие учетные данные по умолчанию.
http://локальный хост:8080/
имя пользователя: root
пароль: тигр
Xdebug устанавливается по умолчанию, и его версия зависит от версии PHP, выбранной в файле ".env"
.
Версии Xdebug:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Чтобы использовать Xdebug, вам необходимо включить настройки в файле ./config/php/php.ini
в соответствии с выбранной версией PHP.
Пример:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: вам необходимо установить расширение Xdebug «PHP Debug». После установки перейдите в раздел «Отладка» и создайте файл запуска, чтобы ваша IDE могла прослушивать и работать правильно.
Пример:
ОЧЕНЬ ВАЖНО: pathMappings
зависит от того, как вы открыли папку в VS Code. Каждая папка имеет свои собственные настройки запуска, которые вы можете просмотреть в .vscode/launch.json
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
Теперь создайте точку останова и запустите отладку.
Кончик! После этих настроек вам может потребоваться перезапустить контейнер.
Он поставляется с Redis. Он работает на порту по умолчанию 6379
.
Поддержка доменов https
встроена, но по умолчанию отключена. Существует 3 способа включения и настройки SSL; https
на localhost
— самый простой. Если вы пытаетесь воссоздать среду тестирования, максимально приближенную к производственной среде, любое доменное имя может поддерживаться с дополнительной конфигурацией.
Примечание. Для каждого доменного имени, отличного от localhost, на котором вы хотите использовать https
, вам необходимо будет изменить файл хостов вашего компьютера и указать имя домена на 127.0.0.1
. Если вы этого не сделаете, SSL не будет работать, и вы будете перенаправляться в Интернет каждый раз, когда попытаетесь посетить это доменное имя локально.
Чтобы включить https
на localhost
(https://localhost), вам необходимо:
localhost
:mkcert
запустите в терминале mkcert localhost 127.0.0.1 ::1
.cert.pem
и cert-key.pem
соответственно.config/ssl
.443
в config/vhosts/default.conf
. Сделанный. Теперь каждый раз, когда вы включаете контейнер LAMP, https
будет работать на localhost
.
Если вы хотите использовать обычные доменные имена для локального тестирования и вам нужна поддержка https
, самым простым решением является сертификат SSL, охватывающий все доменные имена:
mkcert
запустите в терминале mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
, где вы замените все доменные имена и IP-адреса на те, которые вы хотите поддерживать.cert.pem
и cert-key.pem
соответственно.config/ssl
.443
в config/vhosts/default.conf
. Сделанный. Поскольку вы объединили все доменные имена в один сертификат, файл vhost будет поддерживать вашу настройку без необходимости его дальнейшего изменения. Однако при желании вы можете добавить правила для конкретного домена. Теперь каждый раз, когда вы включаете контейнер LAMP, https
будет работать на всех указанных вами доменах.
Если вы хотите, чтобы ваша локальная среда тестирования точно соответствовала вашей рабочей среде и вам нужна поддержка https
, вы можете создать сертификат SSL для каждого домена, который вы хотите поддерживать:
mkcert
в терминале запустите mkcert [your-domain-name(s)-here]
заменив часть скобки на имя вашего домена.[name]-cert.pem
и [name]-cert-key.pem
заменив часть скобки уникальным именем.config/ssl
.443
из файла vhost ( config/vhosts/default.conf
), создайте новые правила, соответствующие имени вашего домена и именам файлов сертификатов. Сделанный. Контейнер LAMP автоматически получит все сертификаты SSL в config/ssl
при запуске. Если вы правильно настроите файл vhosts и разместите сертификаты SSL в config/ssl
, каждый раз, когда вы включаете контейнер LAMP, https
будет работать на указанных вами доменах.
Мы будем рады, если вы захотите создать запрос на включение или помочь людям решить их проблемы. Если вы хотите создать PR, помните, что этот стек не предназначен для промышленного использования, и изменения должны быть универсальными, а не слишком специализированными.
Обратите внимание, что мы упростили структуру проекта с нескольких веток для каждой версии PHP до одной централизованной основной ветки. Пожалуйста, создайте свой PR против основной ветки.
Спасибо!
Мы хотим дать разработчикам возможность быстро создавать креативные приложения. Поэтому мы предоставляем простую в настройке локальную среду разработки для нескольких различных платформ и версий PHP. В производстве вам следует изменить как минимум следующие темы: