Это не совсем понятно, но, похоже, вы собираете PHP на своем локальном компьютере с Linux (скажем, Ubuntu) и пытаетесь запустить его на контейнере Alpine.
Я также предполагаю, что у вас есть веские причины для сборки PHP из исходного кода - в противном случае вы можете использовать доступные сборки PHP для Alpine .
Сборка на не-Alpine Linux и запуск получившегося исполняемого файла на Alpine обычно не работают, поскольку Alpine Linux использует специальную реализацию libc (Standard C library), которая называется musl libc . musl не совместим с библиотекой GNU C - glibc , используемой большинством других дистрибутивов Linux, поэтому для запуска нативного программного обеспечения в Alpine Linux его необходимо создавать на основе той же библиотеки musl libc.
Сообщение об ошибке /usr/local/php/bin/php: not found
приводит в замешательство, и, если предположить, что файл присутствует, это может быть результатом сбоя динамического связывания. Вы можете проверить это, используя ldd /usr/local/php/bin/php
.
Следовательно, вам придется связать PHP с библиотекой musl C для работы на Alpine и, что наиболее предпочтительно, на машине Alpine.
Я могу представить следующие варианты:
Сборка PHP на альпийском контейнере. Я не уверен, поддерживает ли это основная ветка разработки PHP (например, поддержка OpenJDK Java Alpine разработана в рамках отдельных проектов, называемых IcedTea и Portola), но это стоит попробовать. Я полагаю, что это возможно, поскольку сборки PHP доступны для Alpine - попробуйте следовать их рецепту build , если у вас возникнут трудности. Это лучший вариант, на мой взгляд.
Продолжайте собирать PHP на своем компьютере, отличном от Alpine Linux, но связывайте его с бинарным файлом musl libc (обычно доступным через пакеты), а не с glibc. Это может быть более трудным для достижения и более подверженным проблемам, поэтому менее рекомендуется.
Запустите ваш встроенный PHP на контейнере Alpine с поддержкой glibc. Это довольно простая процедура. Однако этот вариант, вероятно, не является жизнеспособным, поскольку ваш PHP по-прежнему будет несовместим с vanilla Alpine и не может использоваться пользователями PHP Alpine «из коробки». Кроме того, добавление glibc в контейнер приводит к накладным расходам в несколько МБ, что противоречит вашей цели при минимальном размере.