Phper-Docker构建swoole系列框架运行所需的开发环境镜像
·
前言:
这里的swoole系列泛指:swoft、hyperf、EasySwoole等框架。
当遇到很多同学在window环境进行swoole框架进行开发时,就卡在环境搭建的问题上。主要涉及在window环境下不能够像Linux、Mac操作系统安装swoole插件一样丝滑。只是对于Phper来说,在集成环境安装php-swoole是比较困难的!
目标:
为swoft框架构建docker镜像。同时也记录一下整个镜像发布过程。
环境:
swoole5.1.5+redis6.1+php8.1
实现过程:
先使用php8.1作为基础镜像,在里面安装有关插件等。
#配置环境变量
export APP_ENV=test
export TIMEZONE=Asia/Shanghai
export PHPREDIS_VERSION=6.1.0
export SWOOLE_VERSION=5.1.5
#安装linux基础工具插件
apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
curl wget git zip unzip less vim procps lsof tcpdump htop openssl net-tools iputils-ping \
libz-dev \
libssl-dev \
libnghttp2-dev \
libpcre2-dev \
libjpeg-dev \
libpng-dev \
libfreetype6-dev
#安装部署php相关插件
docker-php-ext-install bcmath gd pdo_mysql mbstring sockets zip sysvmsg sysvsem sysvshm
rm -rf /var/lib/apt/lists/*
#安装composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer self-update --clean-backups
#安装redis插件
wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz
pecl install /tmp/redis.tar.tgz
rm -rf /tmp/redis.tar.tgz
docker-php-ext-enable redis
#安装swoole插件
wget https://github.com/swoole/swoole-src/archive/refs/tags/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz
mkdir -p swoole
tar -xf swoole.tar.gz -C swoole --strip-components=1
rm swoole.tar.gz
cd swoole
phpize
./configure --enable-mysqlnd --enable-sockets --enable-openssl --enable-http2
make -j$(nproc)
make install
cd ..
rm -r swoole
docker-php-ext-enable swoole
apt-get clean
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
#配置时区
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
echo "${TIMEZONE}" > /etc/timezone
echo "[Date]\ndate.timezone=${TIMEZONE}" > /usr/local/etc/php/conf.d/timezone.ini
接着提交当前镜像到docker hub成为线上镜像
#登录账户
docker login
#提交为镜像
docker commit 镜像hash 镜像名称(chenht12306/swoole_redis_php:s5.1-r6.1-p8.1)
#发布到docker hub
docker push 镜像名称(chenht12306/swoole_redis_php:s5.1-r6.1-p8.1)

镜像地址:https://hub.docker.com/repository/docker/chenht12306/swoole_redis_php/general
注意这里的镜像地址是事先构建好的!!!
FROM chenht12306/swoole_redis_php:s5.1-r6.1-p8.1
LABEL maintainer="Hunter <1261660791@qq.com>" version="1.0"
# --build-arg timezone=Asia/Shanghai
ARG timezone
# app env: prod pre test dev
ARG app_env=test
# default use www-data user
ARG work_user=www-data
# default APP_ENV = test
ENV APP_ENV=${app_env:-"test"} \
TIMEZONE=${timezone:-"Asia/Shanghai"}
## Install composer deps
ADD . /var/www/swoft
RUN cd /var/www/swoft \
&& composer install \
&& composer clearcache
WORKDIR /var/www/swoft
EXPOSE 18306 18307 18308
# ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "http:start"]
CMD ["php", "/var/www/swoft/bin/swoft", "http:start"]
执行docker命令:
#执行构建
docker build -t swoft/swoft .
#运行容器
docker run -it -d --name mySwoft swoft/swoft
#查看运行情况
docker logs swoft/swoft
结果:
访问http://localhost:18306/,成功访问。虽然官方有对应的Dcokerfile,但是会有版本问题,或者路径安装包路径不存在等等一系列问题。暂时自己构建个运行环境方便自己开发调试吧


更多推荐
所有评论(0)