Быстрый старт
Официальный образ OxPHP включает сервер, PHP, расширение OxPHP и все зависимости среды выполнения, поэтому вы можете пройти путь от пустого каталога до работающего приложения за несколько команд.
Одна команда
Если у вас уже есть PHP-проект с каталогом public/:
docker run -p 80:80 -v .:/var/www/html ghcr.io/oxphp/oxphp:0.10.0Откройте http://localhost/. Ваше приложение работает.
Чтобы включить внутренний сервер (работоспособность, метрики, конфигурация):
docker run -p 80:80 -p 9090:9090 -e INTERNAL_ADDR=0.0.0.0:9090 -v .:/var/www/html ghcr.io/oxphp/oxphp:0.10.0Пошаговая настройка с Docker Compose
Более подробное руководство — от пустого каталога до работающего PHP-приложения с проверками работоспособности и структурированным логированием.
-
Создайте каталог проекта.
mkdir my-oxphp-app && cd my-oxphp-app -
Создайте Dockerfile.
FROM ghcr.io/oxphp/oxphp:0.10.0 COPY --chown=www-data:www-data . /var/www/htmlОфициальный образ включает бинарный файл сервера, PHP 8.4 или 8.5 ZTS (8.5 по умолчанию; PHP 8.4 доступен по тегу
:0.10.0-php8.4или по любому тегу*-php8.4*), расширение OxPHP для PHP и все зависимости среды выполнения. -
Добавьте compose.yaml.
services: oxphp: build: . ports: - "80:80" - "9090:9090" environment: - LISTEN_ADDR=0.0.0.0:80 - DOCUMENT_ROOT=/var/www/html/public - INTERNAL_ADDR=0.0.0.0:9090 - LOG_LEVEL=info - ACCESS_LOG=allПорт
80обслуживает ваше приложение. Порт9090открывает внутренний сервер для проверок работоспособности, метрик Prometheus и снимка активной конфигурации. -
Создайте PHP-приложение.
mkdir -p publicСоздайте
public/index.php:<?php $requestId = oxphp_request_id(); $info = oxphp_server_info(); echo "<h1>OxPHP</h1>\n"; echo "<p>Request ID: {$requestId}</p>\n"; echo "<p>Worker: {$info['worker_id']}</p>\n"; echo "<p>SAPI: " . php_sapi_name() . "</p>\n"; echo "<p>Version: {$info['version']}</p>\n"; echo "<p>Time: " . date('c') . "</p>\n";oxphp_request_id()возвращает уникальный идентификатор, присваиваемый каждому запросу.oxphp_server_info()возвращает сведения о работающем сервере, включаяversion,worker_id,request_timeиworker_mode. -
Соберите и запустите.
docker compose up -d --build -
Протестируйте приложение.
curl http://localhost/Ожидаемый вывод:
<h1>OxPHP</h1> <p>Request ID: 67a4b3c11a2b00000001</p> <p>Worker: 0</p> <p>SAPI: cli-server</p> <p>Version: 0.10.0</p> <p>Time: 2026-03-23T12:00:00+00:00</p>Каждый запрос получает уникальный идентификатор. Идентификатор воркера показывает, какой поток PHP-воркера его обработал.
-
Проверьте внутренние эндпоинты.
# Проверка работоспособности — 200 при исправном состоянии, 503 при деградации curl http://localhost:9090/health # Метрики, совместимые с Prometheus curl http://localhost:9090/metrics # Активная конфигурация (пути к TLS скрыты) curl http://localhost:9090/config -
Просмотрите логи.
docker compose logs -f oxphpПоскольку задано
ACCESS_LOG=all, каждый запрос отображается как структурированная строка лога в формате JSON с указанием метода, пути, статуса, времени ответа и идентификатора запроса.
Если вашему приложению нужны дополнительные расширения PHP (pdo_pgsql, intl, xdebug и т. д.), см.
examples/dockerfile/Dockerfile
в репозитории. Это готовый к использованию многоэтапный Dockerfile с отдельными целями dev и prod.
OxPHP намеренно регистрируется под одним из имён SAPI, распознаваемых OPcache. OPcache отключается
для неизвестных SAPI; без этого переименования выполнение PHP полностью обошло бы слой OPcache и работало бы
в несколько раз медленнее. Компромисс в том, что php_sapi_name() нельзя использовать для определения OxPHP — используйте вместо этого
function_exists('oxphp_request_id') или OxPHP\Http\Request::current().
Что дальше
- Руководство по Docker — Dockerfile для разработки и продакшена, настройка Compose, монтирование PHP ini и настройка проверок работоспособности
- Конфигурация — полный справочник по переменным окружения
- Маршрутизация — режимы маршрутизации Traditional, Framework, SPA и Worker
- Режим воркеров — постоянные PHP-процессы, которые инициализируются один раз и обрабатывают несколько запросов
- Функции PHP — все встроенные PHP-функции OxPHP