swoole+yasd镜像dockerfile

提前准备

  • swoole-src-4.7.1.tar.gz
  • yasd-0.3.9.tar.gz
  • composer.phar

Base.dockerfile

# hyperf/hyperf:7.4
#
# @link     https://www.hyperf.io
# @document https://doc.hyperf.io
# @contact  group@hyperf.io
# @license  https://github.com/hyperf/hyperf/blob/master/LICENSE

ARG ALPINE_VERSION

FROM alpine:$ALPINE_VERSION

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

ARG ALPINE_VERSION

# trust this project public key to trust the packages.
ADD https://alpine-apk-repository.knowyourself.cc/php-alpine.rsa.pub /etc/apk/keys/php-alpine.rsa.pub

##
# ---------- building ----------
##
    # change apk source repositories
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories; \
    set -ex \
    && apk update \
    && apk add --no-cache \
    # Install base packages ('ca-certificates' will install 'nghttp2-libs')
    ca-certificates \
    curl \
    wget \
    tar \
    xz \
    libressl \
    tzdata \
    pcre \
    php7 \
    php7-bcmath \
    php7-curl \
    php7-ctype \
    php7-dom \
    php7-gd \
    php7-iconv \
    php7-json \
    php7-mbstring \
    php7-mysqlnd \
    php7-openssl \
    php7-pdo \
    php7-pdo_mysql \
    php7-pdo_sqlite \
    php7-phar \
    php7-posix \
    php7-redis \
    php7-sockets \
    php7-sodium \
    php7-sysvshm \
    php7-sysvmsg \
    php7-sysvsem \
    php7-simplexml \
    php7-tokenizer \
    php7-zip \
    php7-zlib \
    php7-xml \
    php7-xmlwriter \
    php7-xmlreader \
    php7-pcntl \
    php7-opcache \
    php7-mongodb \
    php7-fileinfo \
    && ln -sf /usr/bin/php7 /usr/bin/php \
    && apk del --purge *-dev \
    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php7 \
    && php -v \
    && php -m \
    && echo -e "\033[42;37m Build Completed :).\033[0m\n"

docker build -t testbase --build-arg ALPINE_VERSION=3.13 .

swoole.dockerfile

# hyperf/hyperf:7.4
#
# @link     https://www.hyperf.io
# @document https://doc.hyperf.io
# @contact  group@hyperf.io
# @license  https://github.com/hyperf/hyperf/blob/master/LICENSE

ARG ALPINE_VERSION

# FROM hyperf/hyperf:7.4-alpine-v${ALPINE_VERSION}-base
FROM testbase

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

ARG SW_VERSION
ARG COMPOSER_VERSION

# copy tar.gz files
COPY ./swoole-src-4.4.23.tar.gz /tmp/swoole.tar.gz
COPY ./yasd-0.3.9.tar.gz /tmp/yasd.tar.gz
COPY ./composer.phar /tmp/composer.phar

##
# ---------- env settings ----------
##
ENV SW_VERSION=${SW_VERSION:-"v4.7.1"} \
    COMPOSER_VERSION=${COMPOSER_VERSION:-"2.1.8"} \
    #  install and remove building packages
    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"

# update
RUN set -ex \
    && apk update \
    # for swoole extension libaio linux-headers
    && apk add --no-cache libstdc++ openssl git bash boost-dev \
    && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS libaio-dev openssl-dev curl-dev \
    # download swoole
    # && cd /tmp \
    # && curl -SL "https://github.com/swoole/swoole-src/archive/${SW_VERSION}.tar.gz" -o swoole.tar.gz \
    # && 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-openssl --enable-http2 --enable-swoole-curl --enable-swoole-json \
    && make -s -j$(nproc) && make install \
    ) \
    && echo "memory_limit=1G" > /etc/php7/conf.d/00_default.ini \
    && echo "opcache.enable_cli = 'On'" >> /etc/php7/conf.d/00_opcache.ini \
    && echo "extension=swoole.so" > /etc/php7/conf.d/50_swoole.ini \
    && echo "swoole.use_shortname = 'on'" >> /etc/php7/conf.d/50_swoole.ini \
    # download yasd
    # && cd /tmp \
    # && curl -SL "https://github.com/swoole/yasd/archive/refs/tags/v0.3.9.tar.gz" -o yasd.tar.gz \
    # && ls -alh \
    # php extension:yasd
    && cd /tmp \
    && mkdir -p yasd \
    && tar -xf yasd.tar.gz -C yasd --strip-components=1 \
    && ( \
    cd yasd \
    phpize --clean \
    && phpize \
    && ./configure \
    && make clean \
    && make -s -j$(nproc) \
    && make install \
    ) \
    && echo "zend_extension=yasd.so" > /etc/php7/conf.d/50_yasd.ini \
    && echo "yasd.debug_mode=remote" >> /etc/php7/conf.d/50_yasd.ini \
    && echo "yasd.remote_host=host.docker.internal" >> /etc/php7/conf.d/50_yasd.ini \
    && echo "yasd.remote_port=9000" >> /etc/php7/conf.d/50_yasd.ini \
    && echo "yasd.log_level=0" >> /etc/php7/conf.d/50_yasd.ini \
    # install composer
    # && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \
    && mv /tmp/composer.phar /usr/local/bin/composer \
    && chmod u+x /usr/local/bin/composer \
    # php info
    && php -v \
    && php -m \
    && php --ri swoole \
    && php --ri yasd \
    && composer \
    # ---------- clear works ----------
    && 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"

# ADD docker-entrypoint.sh /docker-entrypoint.sh
# ENTRYPOINT [ "sh", "-c", "/docker-entrypoint.sh" ]

docker build -t phpswoole:4.7.1-yasd .

多平台编译

开启buildx 功能

/etc/docker/daemon.json
"experimental": "enabled"
即可永久开启buildx命令
为了良好的支持性,如果是centos版本需要升级内核到5.12.9才能正常使用

使用buildx 功能

在 Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像。该命令支持–platform 参数可以同时构建支持多种系统架构的 Docker 镜像,大大简化了构建步骤。

  • 由于 Docker 默认的 builder 实例不支持同时指定多个 --platform ,我们必须首先创建一个新的 builder 实例。
    $ docker buildx create --name mybuilder --driver docker-container
  • 使用新创建好的builder实例
    $ docker buildx use mybuilder
  • 查看已有的builder实例
    $ docker buildx ls
  • 安装模拟器(用于多平台镜像构建)
    $ docker run --privileged --rm tonistiigi/binfmt --install all
  • 本地构建镜像并推送
    $ docker buildx build -t encircles/phpswoole:4.4.24 --platform=linux/arm,linux/arm64,linux/amd64 --push -f ./Dockerfile .
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统 毕业设计-EasySwoole+ElasticSearch打造高性能小视频服务系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值