hyperf Dockerfile 配置及 swoole_tracker PHP 第三方扩展的安装
安装扩展
安装部分移步至Hyperf,这里主要讲解的是php扩展的安装和在docker Dockerfile的配置
目录介绍
基于hyperf官方Dockerfile增加的一些配置
entrypoint.sh
,inst.sh
,tracker.sh
,deploy_env.sh
swoole_tracker官方执行脚本
swoole-tracker.ini
swoole_tracker.ini是swoole_tracker的一些配置选项
xlswriter.tar.gz
xlswriter的扩展包
swoole.tar.gz
swoole的扩展包
其他的一些扩展包也可以放在这个目录里
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.1的9504端口上.-v $(pwd):/www映射目录到容器目录内里
6.登录容器: docker exec -it heyperf_name /bin/bash(注意我是mac环境,window或者linux请自行百度)
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 2年前 自动加精
推荐文章: