Skip to content

Instantly share code, notes, and snippets.

@leocavalcante
Created May 5, 2023 00:36
Show Gist options
  • Save leocavalcante/9a768cb1b7768f8373b88829dcbb4ae9 to your computer and use it in GitHub Desktop.
Save leocavalcante/9a768cb1b7768f8373b88829dcbb4ae9 to your computer and use it in GitHub Desktop.
FROM alpine:3.17 AS ext-build
RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& apk add --no-cache \
build-base \
c-ares-dev \
curl-dev \
librdkafka-dev \
mpdecimal-dev \
openssl-dev \
php82-dev \
php82-openssl \
php82-pear \
&& pecl82 install \
decimal \
mongodb \
rdkafka \
redis \
&& wget https://github.com/swoole/swoole-src/archive/refs/tags/v5.0.3.tar.gz -O - -q | tar -xz \
&& cd swoole-src-5.0.3 && phpize82 && ./configure --with-php-config=/usr/bin/php-config82 \
--enable-cares \
--enable-mysqlnd \
--enable-openssl \
--enable-sockets \
--enable-swoole \
&& make -j$(nproc) && make install
FROM alpine:3.17 AS prod
RUN echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk add --no-cache \
c-ares \
librdkafka \
libsasl \
mpdecimal \
php82 \
php82-bcmath \
php82-curl \
php82-mbstring \
php82-mysqlnd \
php82-opcache \
php82-openssl \
php82-pcntl \
php82-pdo \
php82-pdo_mysql \
php82-posix \
php82-phar \
php82-session \
php82-simplexml \
php82-sockets \
php82-tokenizer \
php82-xml \
php82-xmlreader \
php82-xmlwriter \
&& wget https://raw.githubusercontent.com/composer/getcomposer.org/1cf9cac9f0bed289429548be2858dbdfde448da6/web/installer -O - -q | php82 -- --quiet \
&& ln -sf /usr/bin/php82 /usr/bin/php \
&& ln -sf /composer.phar /usr/bin/composer
COPY --from=ext-build /usr/lib/php82/modules/decimal.so /usr/lib/php82/modules/mongodb.so /usr/lib/php82/modules/rdkafka.so /usr/lib/php82/modules/redis.so /usr/lib/php82/modules/swoole.so /usr/lib/php82/modules/
COPY php.ini /etc/php82/conf.d/99_php.ini
WORKDIR /opt
FROM prod AS dev
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_ALLOW_XDEBUG 1
RUN apk add --no-cache \
bash \
php82-pecl-xdebug \
php82-pecl-pcov \
&& echo "opcache.enable=0" >> /etc/php82/conf.d/99_php.ini
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment