我已经使用 Laravel Vapor 好几年了,现在使用本机运行时,直到最近需要使用 Imageick PHP 扩展时才遇到问题。本机运行时不支持 PHP 扩展,因此我决定尝试在临时服务器上使用 docker 运行时,一切都很顺利,直到我尝试在 Vapor UI 中运行 migrate 命令。在 Vapor-UI 中出现以下错误:
sh: /opt/bin/php: not found
尝试在临时部署中搜索 php 的位置以及在我的 dockerfile 中添加 php 的别名,但没有成功。这是我当前的 staging.Dockerfile:
ARG VERSION=php81
FROM laravelphp/vapor:${VERSION}
RUN apk add imagemagick imagemagick-dev php81-pecl-imagick \
&& pecl install imagick \
&& docker-php-ext-enable imagick
COPY . /var/task
以前有人遇到过这个问题吗?看起来太简单了,但我对 Docker 的经验为零,在阅读了一些文档后,我可以理解为什么它不可用,但在 Vapor 上部署期间,我会认为会有问题......如果它不可用的话有没有办法通过在 Dockerfile 或其他地方添加一些内容来访问 Vapor UI 中的 php?
经过一些测试,我能够找到 php 并使用以下行在 Vapor UI 中访问 php:
RUN mkdir /opt/bin && cp /usr/local/bin/php /opt/bin/php
用于生产的整个 Dockerfile:
ARG VERSION=php82-arm
FROM laravelphp/vapor:php82-arm
RUN apk add imagemagick imagemagick-dev php81-pecl-imagick \
&& pecl install imagick \
&& docker-php-ext-enable imagick
RUN mkdir /opt/bin && cp /usr/local/bin/php /opt/bin/php
COPY . /var/task