Created
January 17, 2023 15:37
-
-
Save rodrigopa/56c11eae6109a4915e0e7e4ad00edd66 to your computer and use it in GitHub Desktop.
Dockerfile for PHP from Source
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM alpine:3.16 | |
LABEL maintainer="rodrigopa <rodrigo.pinheiroa@hotmail.com>" version="1.0" license="MIT" | |
ENV TIMEZONE=${timezone:-"America/Fortaleza"} \ | |
APP_ENV=prod | |
RUN set -ex && apk update && apk add --no-cache ca-certificates curl wget tar xz tzdata pcre php81 php81-bcmath php81-curl php81-ctype php81-dom php81-fileinfo php81-gd php81-iconv php81-mbstring php81-mysqlnd php81-openssl php81-pdo php81-pdo_mysql php81-pdo_sqlite php81-phar php81-posix php81-redis php81-sockets php81-sodium php81-sysvshm php81-sysvmsg php81-sysvsem php81-simplexml php81-tokenizer php81-zip php81-zlib php81-xml php81-xmlreader php81-xmlwriter php81-pcntl php81-opcache && ln -sf /usr/bin/php81 /usr/bin/php && apk del --purge *-dev && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/share/php81 && php -v && php -m && echo -e "\033[42;37m Build Completed :).\033[0m\n" | |
ENV PHPIZE_DEPS="autoconf dpkg-dev dpkg file g++ gcc libc-dev make php81-dev php81-pear pkgconf re2c pcre-dev pcre2-dev zlib-dev libtool automake libaio-dev openssl-dev curl-dev" \ | |
PHP_BUILD_VERSION=81 \ | |
SW_VERSION="v5.0.0" \ | |
COMPOSER_VERSION="2.3.1" | |
RUN set -ex && apk update && apk add --no-cache libstdc++ openssl git bash c-ares-dev libpq-dev && apk add --no-cache --virtual .build-deps $PHPIZE_DEPS && cd /tmp && curl -SL "https://github.com/swoole/swoole-src/archive/${SW_VERSION}.tar.gz" -o swoole.tar.gz && ls -alh && cd /tmp && mkdir -p swoole && tar -xf swoole.tar.gz -C swoole --strip-components=1 && ln -s /usr/bin/phpize${PHP_BUILD_VERSION} /usr/local/bin/phpize && ln -s /usr/bin/php-config${PHP_BUILD_VERSION} /usr/local/bin/php-config && ( cd swoole && phpize && ./configure --enable-openssl --enable-swoole-curl --enable-cares --enable-swoole-pgsql && make -s -j$(nproc) && make install ) && echo "memory_limit=1G" > /etc/php${PHP_BUILD_VERSION}/conf.d/00_default.ini && echo "opcache.enable_cli = 'On'" >> /etc/php${PHP_BUILD_VERSION}/conf.d/00_opcache.ini && echo "extension=swoole.so" > /etc/php${PHP_BUILD_VERSION}/conf.d/50_swoole.ini && echo "swoole.use_shortname = 'Off'" >> /etc/php${PHP_BUILD_VERSION}/conf.d/50_swoole.ini && wget -nv -O /usr/local/bin/composer https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar && chmod u+x /usr/local/bin/composer && apk del .build-deps && rm -rf /var/cache/apk/* /tmp/* /usr/share/man /usr/local/bin/php* && php -v && php -m && php --ri swoole && php --ri Zend\ OPcache && composer && echo -e "\033[42;37m Build Completed :).\033[0m\n" | |
RUN set -ex \ | |
# show php version and extensions \ | |
&& php -v \ | |
&& php -m \ | |
&& php --ri swoole \ | |
# ---------- some config ---------- | |
&& cd /etc/php* \ | |
# - config PHP | |
&& { \ | |
echo "upload_max_filesize=64M"; \ | |
echo "post_max_size=64M"; \ | |
echo "memory_limit=1G"; \ | |
echo "date.timezone=${TIMEZONE}"; \ | |
} | tee conf.d/99_overrides.ini \ | |
# - config timezone | |
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \ | |
&& echo "${TIMEZONE}" > /etc/timezone \ | |
# ---------- clear works ---------- | |
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man | |
WORKDIR /opt/www | |
COPY . /opt/www | |
CMD composer install --no-dev -o | |
EXPOSE 8000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment