图文摘要

hyperf官方没有提供arm64的docker镜像,尝试用swoole官方镜像phpswoole/swoole:4.8.8-php7.4-alpine制作,默认是没有安装redis、pcntl、pdo_mysql等扩展的,因此记录下安装过程。

树莓派docker制作swoole镜像运行hyperf

作者:langdi 来源:ytt 发布时间:2022-03-25 18:24:26

phpswoole/swoole:4.8.8-php7.4-alpine默认没有安装redis扩展 所以按以下方式安装

使用swoole官方基础镜像启动容器

docker run -it --name swoole \
-v /ssd/docker:/var/www \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
phpswoole/swoole:4.8.8-php7.4-alpine

修改apk源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk update #更新最新本地镜像源
apk upgrade #升级软件

安装相关依赖 否则无法使用pecl安装php扩展

apk add gcc g++ make libffi-dev
apk add --no-cache -U autoconf

安装redis扩展

pecl install redis #安装提示时全默认回车

安装pcntl

docker-php-ext-install pcntl

安装pdo_mysql

docker-php-ext-install pdo_mysql

写入php.ini

cd /usr/local/etc/php
cp php.ini-production php.ini
echo "extension=redis.so" >> php.ini
echo "swoole.use_shortname='Off'" >> php.ini

查看安装的扩展

php -m

删除安装时生成的残余 否则生成新镜像时文件太大

apk del gcc g++ make libffi-dev
apk del autoconf
rm -rf /var/cache/apk/*
rm -rf /root/.cache
rm -rf /tmp/*

制作新镜像

docker commit swoole arm64-php7.4-swoole-redis:1.0.0

保存镜像到宿主机根目录

docker save -o /arm64-php7.4-swoole-redis.tar arm64-php7.4-swoole-redis:1.0.0

使用新构建的镜像启动容器

docker run -it --name ytt \
-v /ssd/docker:/var/www \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
arm64-php7.4-swoole-redis:1.0.0