|
| 1 | +# hyperf/hyperf:8.4 |
| 2 | +# |
| 3 | +# @link https://www.hyperf.io |
| 4 | +# @document https://hyperf.wiki |
| 5 | + |
| 6 | +# @license https://github.com/hyperf/hyperf/blob/master/LICENSE |
| 7 | + |
| 8 | +ARG ALPINE_VERSION |
| 9 | + |
| 10 | +FROM hyperf/hyperf:8.4-alpine-v${ALPINE_VERSION}-base |
| 11 | + |
| 12 | +LABEL maintainer= "Hyperf Developers <[email protected]>" version= "1.0" license= "MIT" |
| 13 | + |
| 14 | +ARG SW_VERSION |
| 15 | +ARG COMPOSER_VERSION |
| 16 | +ARG PHP_BUILD_VERSION |
| 17 | + |
| 18 | +## |
| 19 | +# ---------- env settings ---------- |
| 20 | +## |
| 21 | +ENV SW_VERSION=${SW_VERSION:-"v5.1.1"} \ |
| 22 | + COMPOSER_VERSION=${COMPOSER_VERSION:-"2.6.6"} \ |
| 23 | + COMPOSER_ALLOW_SUPERUSER=1 \ |
| 24 | + # install and remove building packages |
| 25 | + PHPIZE_DEPS="autoconf dpkg-dev dpkg file g++ gcc libc-dev make php${PHP_BUILD_VERSION}-dev php${PHP_BUILD_VERSION}-pear pkgconf re2c pcre-dev pcre2-dev zlib-dev libtool automake libaio-dev openssl-dev curl-dev" |
| 26 | + |
| 27 | +# update |
| 28 | +RUN set -ex \ |
| 29 | + && apk update \ |
| 30 | + # for swoole extension libaio linux-headers |
| 31 | + && apk add --no-cache libstdc++ openssl git bash c-ares-dev libpq-dev php84-pdo_pgsql php84-pdo_sqlite php84-pdo_odbc \ |
| 32 | + && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS unixodbc-dev sqlite-dev \ |
| 33 | + # download |
| 34 | + && cd /tmp \ |
| 35 | + && curl -SL "https://github.com/swoole/swoole-src/archive/${SW_VERSION}.tar.gz" -o swoole.tar.gz \ |
| 36 | + && ls -alh \ |
| 37 | + # php extension:swoole |
| 38 | + && cd /tmp \ |
| 39 | + && mkdir -p swoole \ |
| 40 | + && tar -xf swoole.tar.gz -C swoole --strip-components=1 \ |
| 41 | + && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize \ |
| 42 | + && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config \ |
| 43 | + && ( \ |
| 44 | + cd swoole \ |
| 45 | + && phpize \ |
| 46 | + && ./configure --enable-openssl --enable-swoole-curl --enable-cares --enable-swoole-pgsql --enable-swoole-sqlite --with-swoole-odbc=unixodbc,/usr \ |
| 47 | + && make -s -j$(nproc) && make install \ |
| 48 | + ) \ |
| 49 | + && echo "memory_limit=1G" > /etc/php${PHP_BUILD_VERSION}/conf.d/00_default.ini \ |
| 50 | + && echo "max_input_vars=PHP_INT_MAX" >> /etc/php${PHP_BUILD_VERSION}/conf.d/00_default.ini \ |
| 51 | + && echo "opcache.enable_cli = 'On'" >> /etc/php${PHP_BUILD_VERSION}/conf.d/00_opcache.ini \ |
| 52 | + && echo "extension=swoole.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swoole.ini \ |
| 53 | + && echo "swoole.use_shortname = 'Off'" >> /etc/php${PHP_BUILD_VERSION}/conf.d/50_swoole.ini \ |
| 54 | + # install composer |
| 55 | + && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ |
| 56 | + && chmod u+x /usr/local/bin/composer \ |
| 57 | + # ---------- clear works ---------- |
| 58 | + && apk del .build-deps \ |
| 59 | + && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \ |
| 60 | + # php info |
| 61 | + && php -v \ |
| 62 | + && php -m \ |
| 63 | + && php --ri swoole \ |
| 64 | + && php --ri Zend\ OPcache \ |
| 65 | + && composer \ |
| 66 | + && echo -e "\033[42;37m Build Completed :).\033[0m\n" |
0 commit comments