在Docker中安装swoole,swoole官网中的镜像是2.x的,最近学习需要安装4.x的,自己手动制作一个镜像。

  1. # 使用的是php7.2-fpm
  2. FROM php:7.2-fpm
  3. LABEL maintainer="59419979@qq.com"
  4. # Version
  5. ENV PHPREDIS_VERSION 4.0.1
  6. ENV HIREDIS_VERSION 0.13.3
  7. ENV SWOOLE_VERSION 4.2.9
  8. # Timezone
  9. RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  10. && echo 'Asia/Shanghai' > /etc/timezone
  11. # Libs
  12. RUN apt-get update \
  13. && apt-get install -y \
  14. curl \
  15. wget \
  16. git \
  17. zip \
  18. libz-dev \
  19. libssl-dev \
  20. libnghttp2-dev \
  21. libpcre3-dev \
  22. && apt-get clean \
  23. && apt-get autoremove
  24. # Composer
  25. RUN curl -sS https://getcomposer.org/installer | php \
  26. && mv composer.phar /usr/local/bin/composer \
  27. && composer self-update --clean-backups
  28. # PDO extension
  29. RUN docker-php-ext-install pdo_mysql
  30. # Bcmath extension
  31. RUN docker-php-ext-install bcmath
  32. # Redis extension
  33. RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \
  34. && pecl install /tmp/redis.tar.tgz \
  35. && rm -rf /tmp/redis.tar.tgz \
  36. && docker-php-ext-enable redis
  37. # Hiredis
  38. RUN wget https://github.com/redis/hiredis/archive/v${HIREDIS_VERSION}.tar.gz -O hiredis.tar.gz \
  39. && mkdir -p hiredis \
  40. && tar -xf hiredis.tar.gz -C hiredis --strip-components=1 \
  41. && rm hiredis.tar.gz \
  42. && ( \
  43. cd hiredis \
  44. && make -j$(nproc) \
  45. && make install \
  46. && ldconfig \
  47. ) \
  48. && rm -r hiredis
  49. # Swoole extension
  50. RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
  51. && mkdir -p swoole \
  52. && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
  53. && rm swoole.tar.gz \
  54. && ( \
  55. cd swoole \
  56. && phpize \
  57. && ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 \
  58. && make -j$(nproc) \
  59. && make install \
  60. ) \
  61. && rm -r swoole \
  62. && docker-php-ext-enable swoole
  63. WORKDIR /home/wwwroot/default/swoole4
  64. EXPOSE 80
  65. 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