在Docker中安装swoole,swoole官网中的镜像是2.x的,最近学习需要安装4.x的,自己手动制作一个镜像。
# 使用的是php7.2-fpm
FROM php:7.2-fpm
LABEL maintainer="59419979@qq.com"
# Version
ENV PHPREDIS_VERSION 4.0.1
ENV HIREDIS_VERSION 0.13.3
ENV SWOOLE_VERSION 4.2.9
# Timezone
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo 'Asia/Shanghai' > /etc/timezone
# Libs
RUN apt-get update
&& apt-get install -y
curl
wget
git
zip
libz-dev
libssl-dev
libnghttp2-dev
libpcre3-dev
&& apt-get clean
&& apt-get autoremove
# Composer
RUN curl -sS https://getcomposer.org/installer | php
&& mv composer.phar /usr/local/bin/composer
&& composer self-update --clean-backups
# PDO extension
RUN docker-php-ext-install pdo_mysql
# Bcmath extension
RUN docker-php-ext-install bcmath
# Redis extension
RUN 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
# Hiredis
RUN wget https://github.com/redis/hiredis/archive/v${HIREDIS_VERSION}.tar.gz -O hiredis.tar.gz
&& mkdir -p hiredis
&& tar -xf hiredis.tar.gz -C hiredis --strip-components=1
&& rm hiredis.tar.gz
&& (
cd hiredis
&& make -j$(nproc)
&& make install
&& ldconfig
)
&& rm -r hiredis
# Swoole extension
RUN wget https://github.com/swoole/swoole-src/archive/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-async-redis --enable-mysqlnd --enable-openssl --enable-http2
&& make -j$(nproc)
&& make install
)
&& rm -r swoole
&& docker-php-ext-enable swoole
WORKDIR /home/wwwroot/default/swoole4
EXPOSE 80
ENTRYPOINT php-fpm
创建目录
mkdir swoole4 && cd swoole4
创建Dockerfile,将以上内容复制进去
vim Dockerfile
build镜像
docker build -t swoole4:v1
新建容器
docker run -dit -p 9501:9501 --name swoole4 swoole4:v1
进入容器
docker exec -it swoole4 /bin/bash
最后推荐大家可以用下我开源的一个基于Swoole4.5+研发的PHP框架。该框架基于注解实现了很多好玩的功能,很适合新人快速上手Swoole扩展。
SW-X框架-专注高性能便捷开发而生的PHP-SwooleX框架www.sw-x.cn