├── .github └── workflows │ ├── build-base.yml │ ├── build-dev.yml │ ├── build-swoole.yml │ ├── build-swow.yml │ ├── push.sh │ └── readme.md ├── .gitignore ├── 8.1 └── alpine │ ├── base │ ├── Dockerfile │ └── init.php │ ├── dev │ └── Dockerfile │ ├── swoole │ ├── Dockerfile │ └── Dockerfile-slim │ └── swow │ └── Dockerfile ├── 8.2 └── alpine │ ├── base │ ├── Dockerfile │ └── init.php │ ├── dev │ └── Dockerfile │ ├── swoole │ ├── Dockerfile │ └── Dockerfile-slim │ └── swow │ └── Dockerfile ├── 8.3 └── alpine │ ├── base │ ├── Dockerfile │ └── init.php │ ├── dev │ └── Dockerfile │ ├── swoole │ ├── Dockerfile │ └── Dockerfile-slim │ └── swow │ └── Dockerfile ├── 8.4 └── alpine │ ├── base │ ├── Dockerfile │ └── init.php │ ├── dev │ └── Dockerfile │ ├── swoole │ ├── Dockerfile │ └── Dockerfile-slim │ └── swow │ └── Dockerfile ├── Dockerfile ├── README.md ├── build-ubuntu.sh ├── build.sh ├── docker-compose.yml ├── push.sh ├── tests └── base │ └── openssl.php └── ubuntu.compose.yml /.github/workflows/build-base.yml: -------------------------------------------------------------------------------- 1 | name: Build Base Image 2 | 3 | on: 4 | push: 5 | workflow_dispatch: 6 | inputs: 7 | event: 8 | description: 'Input your event' 9 | required: true 10 | default: '' 11 | 12 | jobs: 13 | build: 14 | name: Build Base Image 15 | runs-on: 'ubuntu-latest' 16 | env: 17 | PHP_VERSION: '${{ matrix.php-version }}' 18 | ALPINE_VERSION: '${{ matrix.alpine-version }}' 19 | strategy: 20 | matrix: 21 | php-version: [ '8.1', '8.2', '8.3', '8.4' ] 22 | alpine-version: [ '3.16', '3.17', '3.18', '3.19', '3.20', '3.21', 'edge' ] 23 | exclude: 24 | - php-version: '8.4' 25 | alpine-version: '3.16' 26 | - php-version: '8.4' 27 | alpine-version: '3.17' 28 | - php-version: '8.4' 29 | alpine-version: '3.18' 30 | - php-version: '8.4' 31 | alpine-version: '3.19' 32 | - php-version: '8.4' 33 | alpine-version: '3.20' 34 | - php-version: '8.3' 35 | alpine-version: '3.16' 36 | - php-version: '8.3' 37 | alpine-version: '3.17' 38 | - php-version: '8.3' 39 | alpine-version: '3.18' 40 | - php-version: '8.2' 41 | alpine-version: '3.16' 42 | - php-version: '8.2' 43 | alpine-version: '3.17' 44 | - php-version: '8.1' 45 | alpine-version: '3.20' 46 | - php-version: '8.1' 47 | alpine-version: '3.21' 48 | - php-version: '8.1' 49 | alpine-version: 'edge' 50 | max-parallel: 12 51 | fail-fast: false 52 | steps: 53 | - name: Checkout code 54 | uses: actions/checkout@v3 55 | - name: Set up QEMU 56 | uses: docker/setup-qemu-action@v3 57 | - name: Set up Docker Buildx 58 | uses: docker/setup-buildx-action@v3 59 | - name: Login to Docker Hub 60 | uses: docker/login-action@v3 61 | with: 62 | username: limingxinleo 63 | password: ${{ secrets.DOCKERHUB_ACCESSTOKEN }} 64 | - name: Build and export to Docker 65 | uses: docker/build-push-action@v5 66 | with: 67 | context: ${{ matrix.php-version }}/alpine/base 68 | load: true 69 | tags: hyperf/hyperf:${{ matrix.php-version }}-alpine-v${{ matrix.alpine-version }}-base 70 | build-args: | 71 | "ALPINE_VERSION=${{ matrix.alpine-version }}" 72 | - name: Check 73 | run: | 74 | docker run --entrypoint php -v $PWD/tests/base:/opt/www hyperf/hyperf:${{ matrix.php-version }}-alpine-v${{ matrix.alpine-version }}-base /opt/www/openssl.php 75 | - name: Push 76 | if: ${{ github.event.inputs.event == 'publish' }} 77 | uses: docker/build-push-action@v5 78 | with: 79 | context: ${{ matrix.php-version }}/alpine/base 80 | push: true 81 | platforms: linux/amd64,linux/arm64 82 | tags: hyperf/hyperf:${{ matrix.php-version }}-alpine-v${{ matrix.alpine-version }}-base 83 | build-args: | 84 | "ALPINE_VERSION=${{ matrix.alpine-version }}" 85 | 86 | 87 | -------------------------------------------------------------------------------- /.github/workflows/build-dev.yml: -------------------------------------------------------------------------------- 1 | name: Build Develop 2 | 3 | on: [ push ] 4 | env: 5 | COMPOSER_VERSION: '2.8.8' 6 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 7 | jobs: 8 | build: 9 | name: Build PHP ${{ matrix.php-version }} Alpine ${{ matrix.alpine-version }} 10 | runs-on: '${{ matrix.os }}' 11 | env: 12 | ALPINE_VERSION: '${{ matrix.alpine-version }}' 13 | PHP_VERSION: '${{ matrix.php-version }}' 14 | strategy: 15 | matrix: 16 | os: [ ubuntu-latest ] 17 | php-version: [ '8.1', '8.2', '8.3', '8.4' ] 18 | alpine-version: [ '3.16', '3.17', '3.18', '3.19', '3.20', '3.21', 'edge' ] 19 | exclude: 20 | - php-version: '8.4' 21 | alpine-version: '3.16' 22 | - php-version: '8.4' 23 | alpine-version: '3.17' 24 | - php-version: '8.4' 25 | alpine-version: '3.18' 26 | - php-version: '8.4' 27 | alpine-version: '3.19' 28 | - php-version: '8.4' 29 | alpine-version: '3.20' 30 | - php-version: '8.3' 31 | alpine-version: '3.16' 32 | - php-version: '8.3' 33 | alpine-version: '3.17' 34 | - php-version: '8.3' 35 | alpine-version: '3.18' 36 | - php-version: '8.2' 37 | alpine-version: '3.16' 38 | - php-version: '8.2' 39 | alpine-version: '3.17' 40 | - php-version: '8.1' 41 | alpine-version: '3.20' 42 | - php-version: '8.1' 43 | alpine-version: '3.21' 44 | - php-version: '8.1' 45 | alpine-version: 'edge' 46 | max-parallel: 8 47 | fail-fast: false 48 | steps: 49 | - name: Checkout code 50 | uses: actions/checkout@v3 51 | - name: Fetch the PHP BUILD VERSION 52 | id: fetch-php-build-version 53 | shell: php {0} 54 | run: | 55 | " version="1.0" license="MIT" 13 | 14 | ## 15 | # ---------- building ---------- 16 | ## 17 | COPY ./init.php /init.php 18 | 19 | RUN set -ex \ 20 | && apk update \ 21 | && apk add --no-cache \ 22 | # Install base packages ('ca-certificates' will install 'nghttp2-libs') 23 | ca-certificates \ 24 | curl \ 25 | wget \ 26 | tar \ 27 | xz \ 28 | tzdata \ 29 | pcre \ 30 | php81 \ 31 | php81-bcmath \ 32 | php81-curl \ 33 | php81-ctype \ 34 | php81-dom \ 35 | php81-fileinfo \ 36 | php81-gd \ 37 | php81-iconv \ 38 | php81-mbstring \ 39 | php81-mysqlnd \ 40 | php81-openssl \ 41 | php81-pdo \ 42 | php81-pdo_mysql \ 43 | php81-phar \ 44 | php81-posix \ 45 | php81-redis \ 46 | php81-sockets \ 47 | php81-sodium \ 48 | php81-sysvshm \ 49 | php81-sysvmsg \ 50 | php81-sysvsem \ 51 | php81-simplexml \ 52 | php81-tokenizer \ 53 | php81-zip \ 54 | php81-zlib \ 55 | php81-xml \ 56 | php81-xmlreader \ 57 | php81-xmlwriter \ 58 | php81-pcntl \ 59 | php81-opcache \ 60 | && ln -sf /usr/bin/php81 /usr/bin/php \ 61 | && php /init.php \ 62 | && apk del --purge *-dev \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php81 \ 64 | && php -v \ 65 | && php -m \ 66 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 67 | -------------------------------------------------------------------------------- /8.1/alpine/base/init.php: -------------------------------------------------------------------------------- 1 | " version="1.0" license="MIT" 13 | 14 | ARG COMPOSER_VERSION 15 | ARG PHP_BUILD_VERSION 16 | 17 | ENV COMPOSER_VERSION=${COMPOSER_VERSION:-"2.6.6"} \ 18 | COMPOSER_ALLOW_SUPERUSER=1 19 | 20 | ## 21 | # ---------- env settings ---------- 22 | ## 23 | ENV 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" 24 | 25 | # update 26 | RUN set -ex \ 27 | && apk update \ 28 | && apk add --no-cache libstdc++ openssl git bash \ 29 | && apk add --no-cache $PHPIZE_DEPS libaio-dev openssl-dev curl-dev \ 30 | && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize \ 31 | && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config \ 32 | && ln -s /usr/bin/pecl${PHP_BUILD_VERSION} /usr/local/bin/pecl \ 33 | # install composer 34 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 35 | && chmod u+x /usr/local/bin/composer \ 36 | # php info 37 | && php -v \ 38 | && php -m \ 39 | # ---------- clear works ---------- 40 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ 41 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 42 | -------------------------------------------------------------------------------- /8.1/alpine/swoole/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.1-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 php81-pdo_pgsql php81-pdo_sqlite php81-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" 67 | -------------------------------------------------------------------------------- /8.1/alpine/swoole/Dockerfile-slim: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.1-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 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 \ 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" 67 | -------------------------------------------------------------------------------- /8.1/alpine/swow/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.1-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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:-"develop"} \ 22 | COMPOSER_VERSION=${COMPOSER_VERSION:-"2.0.2"} \ 23 | COMPOSER_ALLOW_SUPERUSER=1 \ 24 | # install and remove building packages 25 | PHPIZE_DEPS="autoconf automake gcc g++ make php${PHP_BUILD_VERSION}-dev php${PHP_BUILD_VERSION}-pear file re2c openssl-dev curl-dev" 26 | 27 | # update 28 | RUN set -ex \ 29 | && apk update \ 30 | # for swow extension libaio linux-headers 31 | && apk add --no-cache openssl git bash \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 33 | # download 34 | && cd /tmp \ 35 | && curl -SL "https://github.com/swow/swow/archive/${SW_VERSION}.tar.gz" -o swow.tar.gz \ 36 | && ls -alh \ 37 | # php extension:swow 38 | && cd /tmp \ 39 | && mkdir -p swow \ 40 | && tar -xf swow.tar.gz -C swow --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 swow/ext \ 45 | && phpize \ 46 | && ./configure --enable-swow --enable-swow-ssl --enable-swow-curl \ 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=swow.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swow.ini \ 53 | # install composer 54 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 55 | && chmod u+x /usr/local/bin/composer \ 56 | # php info 57 | && php -v \ 58 | && php -m \ 59 | && php --ri swow \ 60 | && composer \ 61 | # ---------- clear works ---------- 62 | && apk del .build-deps \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \ 64 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 65 | -------------------------------------------------------------------------------- /8.2/alpine/base/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM alpine:$ALPINE_VERSION 11 | 12 | LABEL maintainer="Hyperf Developers " version="1.0" license="MIT" 13 | 14 | ## 15 | # ---------- building ---------- 16 | ## 17 | COPY ./init.php /init.php 18 | 19 | RUN set -ex \ 20 | && apk update \ 21 | && apk add --no-cache \ 22 | # Install base packages ('ca-certificates' will install 'nghttp2-libs') 23 | ca-certificates \ 24 | curl \ 25 | wget \ 26 | tar \ 27 | xz \ 28 | tzdata \ 29 | pcre \ 30 | php82 \ 31 | php82-bcmath \ 32 | php82-curl \ 33 | php82-ctype \ 34 | php82-dom \ 35 | php82-fileinfo \ 36 | php82-gd \ 37 | php82-iconv \ 38 | php82-mbstring \ 39 | php82-mysqlnd \ 40 | php82-openssl \ 41 | php82-pdo \ 42 | php82-pdo_mysql \ 43 | php82-phar \ 44 | php82-posix \ 45 | php82-redis \ 46 | php82-sockets \ 47 | php82-sodium \ 48 | php82-sysvshm \ 49 | php82-sysvmsg \ 50 | php82-sysvsem \ 51 | php82-simplexml \ 52 | php82-tokenizer \ 53 | php82-zip \ 54 | php82-zlib \ 55 | php82-xml \ 56 | php82-xmlreader \ 57 | php82-xmlwriter \ 58 | php82-pcntl \ 59 | php82-opcache \ 60 | && ln -sf /usr/bin/php82 /usr/bin/php \ 61 | && php /init.php \ 62 | && apk del --purge *-dev \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php82 \ 64 | && php -v \ 65 | && php -m \ 66 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 67 | -------------------------------------------------------------------------------- /8.2/alpine/base/init.php: -------------------------------------------------------------------------------- 1 | " version="1.0" license="MIT" 13 | 14 | ARG COMPOSER_VERSION 15 | ARG PHP_BUILD_VERSION 16 | 17 | ENV COMPOSER_VERSION=${COMPOSER_VERSION:-"2.6.6"} \ 18 | COMPOSER_ALLOW_SUPERUSER=1 19 | 20 | ## 21 | # ---------- env settings ---------- 22 | ## 23 | ENV 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" 24 | 25 | # update 26 | RUN set -ex \ 27 | && apk update \ 28 | && apk add --no-cache libstdc++ openssl git bash \ 29 | && apk add --no-cache $PHPIZE_DEPS libaio-dev openssl-dev curl-dev \ 30 | && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize \ 31 | && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config \ 32 | && ln -s /usr/bin/pecl${PHP_BUILD_VERSION} /usr/local/bin/pecl \ 33 | # install composer 34 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 35 | && chmod u+x /usr/local/bin/composer \ 36 | # php info 37 | && php -v \ 38 | && php -m \ 39 | # ---------- clear works ---------- 40 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ 41 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 42 | -------------------------------------------------------------------------------- /8.2/alpine/swoole/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.2 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.2-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 php82-pdo_pgsql php82-pdo_sqlite php82-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" 67 | -------------------------------------------------------------------------------- /8.2/alpine/swoole/Dockerfile-slim: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.2 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.2-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 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 \ 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" 67 | -------------------------------------------------------------------------------- /8.2/alpine/swow/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.2 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.2-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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:-"develop"} \ 22 | COMPOSER_VERSION=${COMPOSER_VERSION:-"2.0.2"} \ 23 | COMPOSER_ALLOW_SUPERUSER=1 \ 24 | # install and remove building packages 25 | PHPIZE_DEPS="autoconf automake gcc g++ make php${PHP_BUILD_VERSION}-dev php${PHP_BUILD_VERSION}-pear file re2c openssl-dev curl-dev" 26 | 27 | # update 28 | RUN set -ex \ 29 | && apk update \ 30 | # for swow extension libaio linux-headers 31 | && apk add --no-cache openssl git bash \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 33 | # download 34 | && cd /tmp \ 35 | && curl -SL "https://github.com/swow/swow/archive/${SW_VERSION}.tar.gz" -o swow.tar.gz \ 36 | && ls -alh \ 37 | # php extension:swow 38 | && cd /tmp \ 39 | && mkdir -p swow \ 40 | && tar -xf swow.tar.gz -C swow --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 swow/ext \ 45 | && phpize \ 46 | && ./configure --enable-swow --enable-swow-ssl --enable-swow-curl \ 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=swow.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swow.ini \ 53 | # install composer 54 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 55 | && chmod u+x /usr/local/bin/composer \ 56 | # php info 57 | && php -v \ 58 | && php -m \ 59 | && php --ri swow \ 60 | && composer \ 61 | # ---------- clear works ---------- 62 | && apk del .build-deps \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \ 64 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 65 | -------------------------------------------------------------------------------- /8.3/alpine/base/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM alpine:$ALPINE_VERSION 11 | 12 | LABEL maintainer="Hyperf Developers " version="1.0" license="MIT" 13 | 14 | ## 15 | # ---------- building ---------- 16 | ## 17 | COPY ./init.php /init.php 18 | 19 | RUN set -ex \ 20 | && apk update \ 21 | && apk add --no-cache \ 22 | # Install base packages ('ca-certificates' will install 'nghttp2-libs') 23 | ca-certificates \ 24 | curl \ 25 | wget \ 26 | tar \ 27 | xz \ 28 | tzdata \ 29 | pcre \ 30 | php83 \ 31 | php83-bcmath \ 32 | php83-curl \ 33 | php83-ctype \ 34 | php83-dom \ 35 | php83-fileinfo \ 36 | php83-gd \ 37 | php83-iconv \ 38 | php83-mbstring \ 39 | php83-mysqlnd \ 40 | php83-openssl \ 41 | php83-pdo \ 42 | php83-pdo_mysql \ 43 | php83-phar \ 44 | php83-posix \ 45 | php83-redis \ 46 | php83-sockets \ 47 | php83-sodium \ 48 | php83-sysvshm \ 49 | php83-sysvmsg \ 50 | php83-sysvsem \ 51 | php83-simplexml \ 52 | php83-tokenizer \ 53 | php83-zip \ 54 | php83-zlib \ 55 | php83-xml \ 56 | php83-xmlreader \ 57 | php83-xmlwriter \ 58 | php83-pcntl \ 59 | php83-opcache \ 60 | && ln -sf /usr/bin/php83 /usr/bin/php \ 61 | && php /init.php \ 62 | && apk del --purge *-dev \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php83 \ 64 | && php -v \ 65 | && php -m \ 66 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 67 | -------------------------------------------------------------------------------- /8.3/alpine/base/init.php: -------------------------------------------------------------------------------- 1 | " version="1.0" license="MIT" 13 | 14 | ARG COMPOSER_VERSION 15 | ARG PHP_BUILD_VERSION 16 | 17 | ENV COMPOSER_VERSION=${COMPOSER_VERSION:-"2.6.6"} \ 18 | COMPOSER_ALLOW_SUPERUSER=1 19 | 20 | ## 21 | # ---------- env settings ---------- 22 | ## 23 | ENV 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" 24 | 25 | # update 26 | RUN set -ex \ 27 | && apk update \ 28 | && apk add --no-cache libstdc++ openssl git bash \ 29 | && apk add --no-cache $PHPIZE_DEPS libaio-dev openssl-dev curl-dev \ 30 | && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize \ 31 | && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config \ 32 | && ln -s /usr/bin/pecl${PHP_BUILD_VERSION} /usr/local/bin/pecl \ 33 | # install composer 34 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 35 | && chmod u+x /usr/local/bin/composer \ 36 | # php info 37 | && php -v \ 38 | && php -m \ 39 | # ---------- clear works ---------- 40 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ 41 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 42 | -------------------------------------------------------------------------------- /8.3/alpine/swoole/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.3 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.3-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 php83-pdo_pgsql php83-pdo_sqlite php83-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" 67 | -------------------------------------------------------------------------------- /8.3/alpine/swoole/Dockerfile-slim: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.3 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.3-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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 \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 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 \ 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" 67 | -------------------------------------------------------------------------------- /8.3/alpine/swow/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.3 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM hyperf/hyperf:8.3-alpine-v${ALPINE_VERSION}-base 11 | 12 | LABEL maintainer="Hyperf Developers " 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:-"develop"} \ 22 | COMPOSER_VERSION=${COMPOSER_VERSION:-"2.0.2"} \ 23 | COMPOSER_ALLOW_SUPERUSER=1 \ 24 | # install and remove building packages 25 | PHPIZE_DEPS="autoconf automake gcc g++ make php${PHP_BUILD_VERSION}-dev php${PHP_BUILD_VERSION}-pear file re2c openssl-dev curl-dev" 26 | 27 | # update 28 | RUN set -ex \ 29 | && apk update \ 30 | # for swow extension libaio linux-headers 31 | && apk add --no-cache openssl git bash \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 33 | # download 34 | && cd /tmp \ 35 | && curl -SL "https://github.com/swow/swow/archive/${SW_VERSION}.tar.gz" -o swow.tar.gz \ 36 | && ls -alh \ 37 | # php extension:swow 38 | && cd /tmp \ 39 | && mkdir -p swow \ 40 | && tar -xf swow.tar.gz -C swow --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 swow/ext \ 45 | && phpize \ 46 | && ./configure --enable-swow --enable-swow-ssl --enable-swow-curl \ 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=swow.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swow.ini \ 53 | # install composer 54 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 55 | && chmod u+x /usr/local/bin/composer \ 56 | # php info 57 | && php -v \ 58 | && php -m \ 59 | && php --ri swow \ 60 | && composer \ 61 | # ---------- clear works ---------- 62 | && apk del .build-deps \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \ 64 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 65 | -------------------------------------------------------------------------------- /8.4/alpine/base/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.1 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | ARG ALPINE_VERSION 9 | 10 | FROM alpine:$ALPINE_VERSION 11 | 12 | LABEL maintainer="Hyperf Developers " version="1.0" license="MIT" 13 | 14 | ## 15 | # ---------- building ---------- 16 | ## 17 | COPY ./init.php /init.php 18 | 19 | RUN set -ex \ 20 | && apk update \ 21 | && apk add --no-cache \ 22 | # Install base packages ('ca-certificates' will install 'nghttp2-libs') 23 | ca-certificates \ 24 | curl \ 25 | wget \ 26 | tar \ 27 | xz \ 28 | tzdata \ 29 | pcre \ 30 | php84 \ 31 | php84-bcmath \ 32 | php84-curl \ 33 | php84-ctype \ 34 | php84-dom \ 35 | php84-fileinfo \ 36 | php84-gd \ 37 | php84-iconv \ 38 | php84-mbstring \ 39 | php84-mysqlnd \ 40 | php84-openssl \ 41 | php84-pdo \ 42 | php84-pdo_mysql \ 43 | php84-phar \ 44 | php84-posix \ 45 | php84-redis \ 46 | php84-sockets \ 47 | php84-sodium \ 48 | php84-sysvshm \ 49 | php84-sysvmsg \ 50 | php84-sysvsem \ 51 | php84-simplexml \ 52 | php84-tokenizer \ 53 | php84-zip \ 54 | php84-zlib \ 55 | php84-xml \ 56 | php84-xmlreader \ 57 | php84-xmlwriter \ 58 | php84-pcntl \ 59 | php84-opcache \ 60 | && ln -sf /usr/bin/php84 /usr/bin/php \ 61 | && php /init.php \ 62 | && apk del --purge *-dev \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php84 \ 64 | && php -v \ 65 | && php -m \ 66 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 67 | -------------------------------------------------------------------------------- /8.4/alpine/base/init.php: -------------------------------------------------------------------------------- 1 | " version="1.0" license="MIT" 13 | 14 | ARG COMPOSER_VERSION 15 | ARG PHP_BUILD_VERSION 16 | 17 | ENV COMPOSER_VERSION=${COMPOSER_VERSION:-"2.6.6"} \ 18 | COMPOSER_ALLOW_SUPERUSER=1 19 | 20 | ## 21 | # ---------- env settings ---------- 22 | ## 23 | ENV 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" 24 | 25 | # update 26 | RUN set -ex \ 27 | && apk update \ 28 | && apk add --no-cache libstdc++ openssl git bash \ 29 | && apk add --no-cache $PHPIZE_DEPS libaio-dev openssl-dev curl-dev \ 30 | && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize \ 31 | && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config \ 32 | && ln -s /usr/bin/pecl${PHP_BUILD_VERSION} /usr/local/bin/pecl \ 33 | # install composer 34 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 35 | && chmod u+x /usr/local/bin/composer \ 36 | # php info 37 | && php -v \ 38 | && php -m \ 39 | # ---------- clear works ---------- 40 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ 41 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 42 | -------------------------------------------------------------------------------- /8.4/alpine/swoole/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.4 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 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 " 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" 67 | -------------------------------------------------------------------------------- /8.4/alpine/swoole/Dockerfile-slim: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.4 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 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 " 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 \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 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 \ 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" 67 | -------------------------------------------------------------------------------- /8.4/alpine/swow/Dockerfile: -------------------------------------------------------------------------------- 1 | # hyperf/hyperf:8.4 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 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 " 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:-"develop"} \ 22 | COMPOSER_VERSION=${COMPOSER_VERSION:-"2.0.2"} \ 23 | COMPOSER_ALLOW_SUPERUSER=1 \ 24 | # install and remove building packages 25 | PHPIZE_DEPS="autoconf automake gcc g++ make php${PHP_BUILD_VERSION}-dev php${PHP_BUILD_VERSION}-pear file re2c openssl-dev curl-dev" 26 | 27 | # update 28 | RUN set -ex \ 29 | && apk update \ 30 | # for swow extension libaio linux-headers 31 | && apk add --no-cache openssl git bash \ 32 | && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \ 33 | # download 34 | && cd /tmp \ 35 | && curl -SL "https://github.com/swow/swow/archive/${SW_VERSION}.tar.gz" -o swow.tar.gz \ 36 | && ls -alh \ 37 | # php extension:swow 38 | && cd /tmp \ 39 | && mkdir -p swow \ 40 | && tar -xf swow.tar.gz -C swow --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 swow/ext \ 45 | && phpize \ 46 | && ./configure --enable-swow --enable-swow-ssl --enable-swow-curl \ 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=swow.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swow.ini \ 53 | # install composer 54 | && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \ 55 | && chmod u+x /usr/local/bin/composer \ 56 | # php info 57 | && php -v \ 58 | && php -m \ 59 | && php --ri swow \ 60 | && composer \ 61 | # ---------- clear works ---------- 62 | && apk del .build-deps \ 63 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* \ 64 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 65 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Default Dockerfile 2 | # 3 | # @link https://www.hyperf.io 4 | # @document https://hyperf.wiki 5 | # @contact group@hyperf.io 6 | # @license https://github.com/hyperf/hyperf/blob/master/LICENSE 7 | 8 | FROM hyperf/hyperf:8.1-alpine-v3.16-swoole 9 | LABEL maintainer="Hyperf Developers " version="1.0" license="MIT" app.name="Hyperf" 10 | 11 | ## 12 | # ---------- env settings ---------- 13 | ## 14 | # --build-arg timezone=Asia/Shanghai 15 | ARG timezone 16 | 17 | ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \ 18 | APP_ENV=prod \ 19 | SCAN_CACHEABLE=(true) 20 | 21 | # update 22 | RUN set -ex \ 23 | # show php version and extensions 24 | && php -v \ 25 | && php -m \ 26 | && php --ri swoole \ 27 | # ---------- some config ---------- 28 | && cd /etc/php81 \ 29 | # - config PHP 30 | && { \ 31 | echo "upload_max_filesize=128M"; \ 32 | echo "post_max_size=128M"; \ 33 | echo "memory_limit=1G"; \ 34 | echo "date.timezone=${TIMEZONE}"; \ 35 | } | tee conf.d/99_overrides.ini \ 36 | # - config timezone 37 | && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \ 38 | && echo "${TIMEZONE}" > /etc/timezone \ 39 | # ---------- clear works ---------- 40 | && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \ 41 | && echo -e "\033[42;37m Build Completed :).\033[0m\n" 42 | 43 | WORKDIR /opt/www 44 | 45 | # Composer Cache 46 | # COPY ./composer.* /opt/www/ 47 | # RUN composer install --no-dev --no-scripts 48 | 49 | COPY . /opt/www 50 | RUN composer install --no-dev -o && php bin/hyperf.php 51 | 52 | EXPOSE 9501 53 | 54 | ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"] 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hyperf-docker 2 | 3 | ## Supported tags and respective Dockerfile links 4 | 5 | tag format: 6 | 7 | - 8.1: php version, support 8.1/8.2/8.3, Recommend 8.1 8 | - alpine: base images, supoort alpine/ubuntu, recommend alpine 9 | - v3.18: alpine version, support alpine 3.16/3.17/3.18/edge, recommend 3.18 10 | - swoole: support base/dev/swoole/swow 11 | - v5.1.2: swoole/swow version 12 | 13 | support: 14 | 15 | - [`8.1-alpine-v3.16-swoole-*`, `8.1-alpine-v3.16-swoole`](https://github.com/hyperf/hyperf-docker/blob/master/8.1/alpine/swoole/Dockerfile) 16 | - [`8.1-alpine-v3.16-swow-*`, `8.1-alpine-v3.16-swow`](https://github.com/hyperf/hyperf-docker/blob/master/8.1/alpine/swow/Dockerfile) 17 | - [`8.1-alpine-v3.16-base`](https://github.com/hyperf/hyperf-docker/blob/master/8.1/alpine/base/Dockerfile) 18 | - [`8.2-alpine-vedge-swoole-*`, `8.2-alpine-vedge-swoole`](https://github.com/hyperf/hyperf-docker/blob/master/8.2/alpine/swoole/Dockerfile) 19 | - [`8.2-alpine-vedge-swow-*`, `8.1-alpine-vedge-swow`](https://github.com/hyperf/hyperf-docker/blob/master/8.2/alpine/swow/Dockerfile) 20 | - [`8.2-alpine-vedge-base`](https://github.com/hyperf/hyperf-docker/blob/master/8.2/alpine/base/Dockerfile) 21 | 22 | ## Quick reference 23 | 24 | - [hyperf](https://github.com/hyperf) 25 | - [hyperf doc](https://hyperf.wiki) 26 | 27 | ## How to use this image 28 | 29 | Added [Dockerfile](https://github.com/hyperf/hyperf-docker/blob/master/Dockerfile) to your project. 30 | 31 | ## Info 32 | 33 | Base image contains extensions below: 34 | 35 | ``` 36 | [PHP Modules] 37 | bcmath 38 | Core 39 | ctype 40 | curl 41 | date 42 | dom 43 | fileinfo 44 | filter 45 | gd 46 | hash 47 | iconv 48 | igbinary 49 | json 50 | libxml 51 | mbstring 52 | mysqlnd 53 | openssl 54 | pcntl 55 | pcre 56 | PDO 57 | pdo_mysql 58 | Phar 59 | posix 60 | readline 61 | redis 62 | Reflection 63 | session 64 | SimpleXML 65 | sockets 66 | sodium 67 | SPL 68 | standard 69 | sysvmsg 70 | sysvsem 71 | sysvshm 72 | tokenizer 73 | xml 74 | xmlreader 75 | xmlwriter 76 | Zend OPcache 77 | zip 78 | zlib 79 | 80 | [Zend Modules] 81 | Zend OPcache 82 | ``` 83 | 84 | The Swoole info like the code below: 85 | 86 | ```shell 87 | swoole 88 | 89 | Swoole => enabled 90 | Author => Swoole Team 91 | Version => 5.1.1 92 | Built => Dec 11 2023 01:47:26 93 | coroutine => enabled with boost asm context 94 | epoll => enabled 95 | eventfd => enabled 96 | signalfd => enabled 97 | spinlock => enabled 98 | rwlock => enabled 99 | openssl => OpenSSL 3.1.4 24 Oct 2023 100 | dtls => enabled 101 | http2 => enabled 102 | json => enabled 103 | curl-native => enabled 104 | pcre => enabled 105 | c-ares => 1.19.1 106 | zlib => 1.2.13 107 | brotli => E16777225/D16777225 108 | mutex_timedlock => enabled 109 | pthread_barrier => enabled 110 | async_redis => enabled 111 | coroutine_pgsql => enabled 112 | 113 | Directive => Local Value => Master Value 114 | swoole.enable_coroutine => On => On 115 | swoole.enable_library => On => On 116 | swoole.enable_fiber_mock => Off => Off 117 | swoole.enable_preemptive_scheduler => Off => Off 118 | swoole.display_errors => On => On 119 | swoole.use_shortname => Off => Off 120 | swoole.unixsock_buffer_size => 8388608 => 8388608 121 | ``` 122 | 123 | ## more demo 124 | 125 | ### PHP 8.x 126 | 127 | > For PHP 8.x you have to install `$PHPIZE_DEPS` and use `pecl8` instead of `pecl`. 128 | 129 | - grpc 130 | 131 | ```dockerfile 132 | RUN apk add --no-cache $PHPIZE_DEPS \ 133 | && pecl8 install grpc \ 134 | && echo "extension=grpc.so" > /etc/php8/conf.d/grpc.ini 135 | ``` 136 | 137 | ### PHP 7.x 138 | 139 | - kafka 140 | 141 | ```dockerfile 142 | RUN apk add --no-cache librdkafka-dev \ 143 | && pecl install rdkafka \ 144 | && echo "extension=rdkafka.so" > /etc/php7/conf.d/rdkafka.ini 145 | ``` 146 | 147 | - aerospike: https://github.com/aerospike/aerospike-client-php/issues/24 148 | 149 | - mongodb 150 | 151 | ```dockerfile 152 | RUN apk add --no-cache openssl-dev \ 153 | && pecl install mongodb \ 154 | && echo "extension=mongodb.so" > /etc/php7/conf.d/mongodb.ini 155 | ``` 156 | 157 | - protobuf 158 | 159 | ```dockerfile 160 | # mac protobuf: https://blog.csdn.net/JoeBlackzqq/article/details/83118248 161 | RUN apk add --no-cache protobuf \ 162 | && cd /tmp \ 163 | && pecl install protobuf \ 164 | && echo "extension=protobuf.so" > /etc/php7/conf.d/protobuf.ini 165 | ``` 166 | 167 | - swoole tracker 168 | 169 | ```dockerfile 170 | # download swoole tracker 171 | ADD ./swoole-tracker-install.sh /tmp 172 | 173 | RUN chmod +x /tmp/swoole-tracker-install.sh \ 174 | && cd /tmp \ 175 | && ./swoole-tracker-install.sh \ 176 | && rm /tmp/swoole-tracker-install.sh \ 177 | # config 178 | && cp /tmp/swoole-tracker/swoole_tracker72.so /usr/lib/php7/modules/swoole_tracker72.so \ 179 | && echo "extension=swoole_tracker72.so" > /etc/php7/conf.d/swoole-tracker.ini \ 180 | && echo "apm.enable=1" >> /etc/php7/conf.d/swoole-tracker.ini \ 181 | && echo "apm.sampling_rate=100" >> /etc/php7/conf.d/swoole-tracker.ini \ 182 | && echo "apm.enable_memcheck=1" >> /etc/php7/conf.d/swoole-tracker.ini \ 183 | # launch 184 | && printf '#!/bin/sh\n/opt/swoole/script/php/swoole_php /opt/swoole/node-agent/src/node.php' > /opt/swoole/entrypoint.sh \ 185 | && chmod 755 /opt/swoole/entrypoint.sh 186 | ``` 187 | 188 | - fix aliyun oss wrong charset 189 | 190 | ```dockerfile 191 | # fix aliyun oss wrong charset: https://github.com/aliyun/aliyun-oss-php-sdk/issues/101 192 | # https://github.com/docker-library/php/issues/240#issuecomment-762438977 193 | 194 | RUN apk --no-cache --allow-untrusted --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ add gnu-libiconv=1.15-r2 195 | ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so 196 | ``` 197 | -------------------------------------------------------------------------------- /build-ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | # determine swoole version to build. 6 | TASK=${1} 7 | CHECK=${!#} 8 | 9 | # build base image 10 | if [[ ${TASK} == "base" ]]; then 11 | export PHP_VERSION=7.4 && export UBUNTU_VERSION=20.10 && docker-compose -f ubuntu.compose.yml build ubuntu-base 12 | fi 13 | 14 | # build swoole image 15 | if [[ ${TASK} == "cli" ]]; then 16 | SWOOLE_VERSION=${2} 17 | export SWOOLE_VERSION=${SWOOLE_VERSION} 18 | export PHP_VERSION=7.4 && export UBUNTU_VERSION=20.10 && docker-compose -f ubuntu.compose.yml build ubuntu-cli 19 | fi 20 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | # determine swoole version to build. 6 | TASK=${1} 7 | CHECK=${!#} 8 | 9 | function check_or_push() { 10 | TAG=${1} 11 | if [[ ${CHECK} == "--check" ]]; then 12 | echo "Checking $TAG ..." 13 | version=`docker run hyperf/hyperf:$TAG php -v` 14 | echo $version | grep -Eo "PHP \d+\.\d+\.\d+" 15 | swoole=`docker run hyperf/hyperf:$TAG php --ri swoole` && echo $swoole | grep -Eo "Version => \d+\.\d+\.\d+" || echo "No Swoole." 16 | fi 17 | 18 | if [[ ${CHECK} != "--check" ]]; then 19 | echo "Publishing "$TAG" ..." 20 | # Push origin image 21 | docker push hyperf/hyperf:${TAG} 22 | fi 23 | 24 | echo -e "\n" 25 | } 26 | 27 | # build base image 28 | if [[ ${TASK} == "build" ]]; then 29 | export PHP_VERSION=7.3 && export ALPINE_VERSION=3.10 && docker-compose build alpine-base 30 | export PHP_VERSION=7.3 && export ALPINE_VERSION=3.11 && docker-compose build alpine-base 31 | 32 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.10 && docker-compose build alpine-base 33 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.11 && docker-compose build alpine-base 34 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.12 && docker-compose build alpine-base 35 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.13 && docker-compose build alpine-origin-base 36 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.14 && docker-compose build alpine-origin-base 37 | export PHP_VERSION=7.4 && export ALPINE_VERSION=3.15 && docker-compose build alpine-origin-base 38 | 39 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.11 && docker-compose build alpine-base 40 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.12 && docker-compose build alpine-base 41 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.13 && docker-compose build alpine-origin-base 42 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.14 && docker-compose build alpine-origin-base 43 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.15 && docker-compose build alpine-origin-base 44 | export PHP_VERSION=8.0 && export ALPINE_VERSION=3.16 && docker-compose build alpine-origin-base 45 | 46 | export PHP_VERSION=8.1 && export ALPINE_VERSION=3.12 && docker-compose build alpine-base 47 | export PHP_VERSION=8.1 && export ALPINE_VERSION=3.13 && docker-compose build alpine-base 48 | export PHP_VERSION=8.1 && export ALPINE_VERSION=3.14 && docker-compose build alpine-base 49 | export PHP_VERSION=8.1 && export ALPINE_VERSION=3.15 && docker-compose build alpine-base 50 | export PHP_VERSION=8.1 && export ALPINE_VERSION=3.16 && docker-compose build alpine-origin-base 51 | fi 52 | 53 | if [[ ${TASK} == "publish" ]]; then 54 | # Push base image 55 | TAGS="7.3-alpine-v3.10-base 7.3-alpine-v3.11-base 7.4-alpine-v3.10-base 7.4-alpine-v3.11-base 7.4-alpine-v3.12-base 7.4-alpine-v3.13-base 7.4-alpine-v3.14-base 7.4-alpine-v3.15-base 8.0-alpine-v3.11-base 8.0-alpine-v3.12-base 8.0-alpine-v3.13-base 8.0-alpine-v3.14-base 8.0-alpine-v3.15-base 8.1-alpine-v3.12-base 8.1-alpine-v3.13-base 8.1-alpine-v3.14-base 8.1-alpine-v3.15-base" 56 | for TAG in ${TAGS}; do 57 | check_or_push $TAG 58 | done 59 | fi 60 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | # syntax version. 2 | version: "3.7" 3 | 4 | # services list. 5 | services: 6 | # base image 7 | alpine-base: 8 | image: "hyperf/hyperf:${PHP_VERSION}-alpine-v${ALPINE_VERSION}-base" 9 | build: 10 | context: "${PHP_VERSION}/alpine/base" 11 | args: 12 | ALPINE_VERSION: ${ALPINE_VERSION} 13 | 14 | # swoole image 15 | alpine-swoole: 16 | image: "hyperf/hyperf:${PHP_VERSION}-alpine-v${ALPINE_VERSION}-swoole${SPEC}-${SW_VERSION}" 17 | build: 18 | context: "${PHP_VERSION}/alpine/swoole" 19 | dockerfile: "Dockerfile${SPEC}" 20 | args: 21 | ALPINE_VERSION: ${ALPINE_VERSION} 22 | SW_VERSION: ${SW_VERSION} 23 | COMPOSER_VERSION: ${COMPOSER_VERSION} 24 | PHP_BUILD_VERSION: ${PHP_BUILD_VERSION} 25 | 26 | # swow image 27 | alpine-swow: 28 | image: "hyperf/hyperf:${PHP_VERSION}-alpine-v${ALPINE_VERSION}-swow${SPEC}-${SW_VERSION}" 29 | build: 30 | context: "${PHP_VERSION}/alpine/swow" 31 | args: 32 | ALPINE_VERSION: ${ALPINE_VERSION} 33 | SW_VERSION: ${SW_VERSION} 34 | COMPOSER_VERSION: ${COMPOSER_VERSION} 35 | PHP_BUILD_VERSION: ${PHP_BUILD_VERSION} 36 | 37 | # dev image 38 | alpine-dev: 39 | image: "hyperf/hyperf:${PHP_VERSION}-alpine-v${ALPINE_VERSION}-dev" 40 | build: 41 | context: "${PHP_VERSION}/alpine/dev" 42 | args: 43 | ALPINE_VERSION: ${ALPINE_VERSION} 44 | COMPOSER_VERSION: ${COMPOSER_VERSION} 45 | PHP_BUILD_VERSION: ${PHP_BUILD_VERSION} 46 | -------------------------------------------------------------------------------- /push.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | export ENGINE=${1} 6 | export VERSION=${2} 7 | export CHECK=${!#} 8 | export TAGS="7.3-alpine-v3.9 7.3-alpine-v3.10 7.3-alpine-v3.11 7.4-alpine-v3.9 7.4-alpine-v3.10 7.4-alpine-v3.11" 9 | 10 | function pull() { 11 | for TAG in ${TAGS}; do 12 | docker pull docker.pkg.github.com/hyperf/hyperf-docker/hyperf:"${TAG}-${ENGINE}-${VERSION}" 13 | docker tag docker.pkg.github.com/hyperf/hyperf-docker/hyperf:"${TAG}-${ENGINE}-${VERSION}" hyperf/hyperf:"${TAG}-${ENGINE}-${VERSION}" 14 | done 15 | } 16 | 17 | function push() { 18 | for TAG in ${TAGS}; do 19 | PV=${VERSION%\.*} 20 | PPV=${VERSION%%\.*} 21 | 22 | docker tag hyperf/hyperf:"${TAG}-${ENGINE}-${VERSION}" hyperf/hyperf:"${TAG}-${ENGINE}-${PV}" 23 | docker tag hyperf/hyperf:"${TAG}-${ENGINE}-${VERSION}" hyperf/hyperf:"${TAG}-${ENGINE}-${PPV}" 24 | docker tag hyperf/hyperf:"${TAG}-${ENGINE}-${VERSION}" hyperf/hyperf:"${TAG}-${ENGINE}" 25 | if [[ ${CHECK} != "--check" ]]; then 26 | echo "Publishing "${TAG}-${ENGINE}" ..." 27 | docker push hyperf/hyperf:"${TAG}-${ENGINE}" 28 | docker push hyperf/hyperf:"${TAG}-${ENGINE}-${PV}" 29 | docker push hyperf/hyperf:"${TAG}-${ENGINE}-${PPV}" 30 | docker push hyperf/hyperf:"${TAG}-${ENGINE}-${VERSION}" 31 | br 32 | fi 33 | done 34 | } 35 | 36 | function check() { 37 | if [[ ${CHECK} == "--check" ]]; then 38 | for TAG in ${TAGS}; do 39 | REALTAG=${TAG}-${ENGINE}-${VERSION} 40 | echo "Checking ${REALTAG}" 41 | version=`docker run hyperf/hyperf:$REALTAG php -v` 42 | echo $version | grep -Eo "PHP \d+\.\d+\.\d+" 43 | echo "Swoole: " 44 | swoole=`docker run hyperf/hyperf:$REALTAG php --ri swoole` && echo $swoole | grep -Eo "Version => \d+\.\d+\.\d+" || echo "No Swoole." 45 | echo "Swow: " 46 | swow=`docker run hyperf/hyperf:$REALTAG php --ri swow` && echo $swow | grep -Eo "Version => \d+\.\d+\.\d+" || echo "No Swow." 47 | br 48 | done 49 | fi 50 | } 51 | 52 | function br() { 53 | echo -e "\n" 54 | } 55 | 56 | if [[ ${ENGINE} != "" && ${VERSION} != "" ]]; then 57 | pull 58 | br 59 | check 60 | br 61 | push 62 | fi 63 | 64 | -------------------------------------------------------------------------------- /tests/base/openssl.php: -------------------------------------------------------------------------------- 1 |