hyperf Dockerfile 配置及 swoole_tracker PHP 第三方扩展的安装

安装扩展

安装部分移步至Hyperf,这里主要讲解的是php扩展的安装和在docker Dockerfile的配置

目录介绍

基于hyperf官方Dockerfile增加的一些配置

  1. entrypoint.sh,inst.sh,tracker.sh,deploy_env.sh

    swoole_tracker官方执行脚本

  2. swoole-tracker.ini

    swoole_tracker.ini是swoole_tracker的一些配置选项

  3. xlswriter.tar.gz

    xlswriter的扩展包

  4. swoole.tar.gz

    swoole的扩展包

  5. 其他的一些扩展包也可以放在这个目录里

Dockerfile

# hyperf-cloud/hyperf:7.3-alpine-cli
#
# @link     https://www.hyperf.io
# @document https://doc.hyperf.io
# @contact  group@hyperf.io
# @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE

FROM hyperf/hyperf:7.3-alpine-v3.9-base

LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT"

RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g" /etc/apk/repositories


ARG SWOOLE_VERSION

ENV SWOOLE_VERSION=${SWOOLE_VERSION:-"4.4.16"} \
    TIMEZONE=${timezone:-"Asia/Shanghai"} \
    ## 自定义配置就行
    COMPOSER_VERSION=${COMPOSER_VERSION:-"1.9.3"} \
    PHPIZE_DEPS="autoconf dpkg-dev dpkg file g++ gcc libc-dev make php7-dev php7-pear pkgconf re2c pcre-dev pcre2-dev zlib-dev libtool automake"

RUN set -ex \
    && apk update \
    # for swoole extension libaio linux-headers
    && apk add --no-cache libstdc++ openssl git bash \
    && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS libaio-dev openssl-dev


COPY .build/swoole.tar.gz /tmp
COPY .build/xlswriter.tar.gz /tmp
RUN cd /tmp \
    && ls -alh \
    # php extension:swoole
    && cd /tmp \
    && mkdir -p swoole \
    && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
    && ln -s /usr/bin/phpize7 /usr/local/bin/phpize \
    && ln -s /usr/bin/php-config7 /usr/local/bin/php-config \
    && ( \
        cd swoole \
        && phpize \
        && ./configure --enable-mysqlnd --enable-openssl --enable-http2 \
        && make -s -j$(nproc) && make install \
    ) \
    && echo "extension=swoole.so" > /etc/php7/conf.d/50_swoole.ini \
    && echo "swoole.use_shortname='Off'" >> /etc/php7/conf.d/50_swoole.ini \
    # xlswriter
    && cd /tmp \
    && mkdir -p xlswriter \
    && tar -xf xlswriter.tar.gz -C xlswriter --strip-components=1 \
    && ( \
        cd xlswriter \
        && phpize \
        && ./configure --enable-reader \
        && make -s -j$(nproc) && make install \
    ) \
    && echo "extension=xlswriter.so" > /etc/php7/conf.d/50_xlswriter.ini \
    # clear
    && php -v \
    && php -m \
    && php --ri swoole

COPY .build/tracker.sh /tmp

RUN chmod +x /tmp/tracker.sh && \
    cd /tmp/ && \
    ./tracker.sh && \
    rm /tmp/tracker.sh
RUN  echo "[swoole_tracker]" >> /etc/php7/conf.d/50_swoole.ini
RUN  echo "extension=/opt/swoole_tracker.so" >> /etc/php7/conf.d/50_swoole.ini
RUN  echo "apm.enable=1           #打开总开关" >> /etc/php7/conf.d/50_swoole.ini
RUN  echo "apm.sampling_rate=100  #采样率 例如:100%" >> /etc/php7/conf.d/50_swoole.ini
RUN  echo "apm.enable_memcheck=1  #开启内存泄漏检测 默认0 关闭状态" >> /etc/php7/conf.d/50_swoole.ini
RUN cp /tmp/swoole-tracker/swoole_tracker73.so /opt/swoole_tracker.so
 #  ---------- some config ----------
RUN  cd /etc/php7 \
    # - config PHP
    && { \
        echo "upload_max_filesize=100M"; \
        echo "post_max_size=108M"; \
        echo "memory_limit=1024M"; \
        echo "date.timezone=${TIMEZONE}"; \
    } | tee /etc/php7/conf.d/99-overrides.ini
# ----------- install composer -----------#
RUN cd /tmp \
    && wget https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \
    && chmod u+x composer.phar \
    && mkdir -p /usr/local/bin/composer \
    && cp composer.phar /usr/local/bin/composer
# ---------- clear works ----------
RUN apk del .build-deps \
    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \
    && echo -e "\033[42;37m Build Completed :).\033[0m\n"
WORKDIR /www
VOLUME /www
CMD ["php","bin/hyperf.php","start"]

自定义扩展安装

1. 首先本地下载好扩展包复制到.build目录里去

2.编辑dockerfile 增加 COPY .build/xxxx.tar.gz /tmp

3.例如安装xlswriter  编辑dockerfile配置如下
    # xlswriter
      && cd /tmp \
      && mkdir -p xlswriter \
      && tar -xf xlswriter.tar.gz -C xlswriter --strip-components=1 \
      && ( \
        cd xlswriter \
        && phpize \
        && ./configure --enable-reader \
        && make -s -j$(nproc) && make install \
      ) \
     && echo "extension=xlswriter.so" > /etc/php7/conf.d/50_xlswriter.ini \
4.docker build -t hyperf:v1.0 .  构建镜像

5.docker run -it -p 127.0.0.1:9504:9504 -v $(pwd):/www --name heyperf_name(容器名称) hyperf:v1.0 /bin/bash 使用镜像"hyperf:v1.0" 以交互模式启动一个容器并命名为”heyperf_name”,在容器内执行”/bin/bash”,而且绑定容器的9504端口,并且映射到宿主机127.0.0.19504端口上.-v $(pwd):/www映射目录到容器目录内里

6.登录容器: docker exec -it heyperf_name /bin/bash(注意我是mac环境,window或者linux请自行百度)
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
CodingHePing
讨论数量: 1

不要把swoole_tracker目录相关文件提交发布,每个人的不一致。

4年前 评论
CodingHePing (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!