# Dockerfile extending the generic PHP image with application files for a single application.
FROM gcr.io/google-appengine/php:latest
# Add PHP 7.1 package to apt repository
RUN DEBIAN_FRONTEND=noninteractive && \
apt-get install -y --no-install-recommends apt-transport-https lsb-release ca-certificates wget lsb-release vim; \
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg; \
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list;
# Install PHP 7.1
RUN DEBIAN_FRONTEND=noninteractive && \
apt-get update && apt-get install -y --no-install-recommends php7.1 php7.1-common php7.1-cli php7.1-curl php7.1-gd php7.1-imap php7.1-intl php7.1-json php7.1-mcrypt php7.1-mysql php7.1-opcache php7.1-soap php7.1-xml php7.1-xmlrpc php7.1-xsl php7.1-zip php-apcu php-ds php-fpm php-http php-mailparse php-memcached php-oauth php-sodium php-uuid php-yaml;
# Overwrite Google's PHP version with ours.
# Keep various configurations to not break things!
# This is based on the Docker image for running PHP applications on the App Engine Flexible Runtime: https://github.com/GoogleCloudPlatform/php-docker
RUN DEBIAN_FRONTEND=noninteractive && \
mv "${PHP71_DIR}" "${PHP71_DIR}"_GAE && rm -f "${PHP_DIR}"; \
ln -s "/etc/php/7.1/" ${PHP71_DIR} && ln -s "/etc/php/7.1/" ${PHP_DIR}; \
mkdir -p "${PHP71_DIR}"/bin && ln -s "$(which php)" "${PHP71_DIR}"/bin/php; \
mkdir -p "${PHP71_DIR}"/etc && cp "${PHP_CONFIG_TEMPLATE}"/php-fpm.conf "${PHP71_DIR}"/etc/php-fpm.conf && touch "${PHP71_DIR}"/etc/php-fpm-user.conf && cp "${PHP71_DIR}"/etc/*.conf "${PHP71_DIR}"/cli/; \
mkdir -p "${PHP71_DIR}"/lib && cp "${PHP_CONFIG_TEMPLATE}"/php-cli.ini "${PHP71_DIR}"/lib/ && cp "${PHP_CONFIG_TEMPLATE}"/php-cli.ini "${PHP71_DIR}"/cli/; \
mkdir -p "${PHP71_DIR}"/sbin && ln -s /usr/sbin/php-fpm7.1 /opt/php/sbin/php-fpm
# The Docker image will configure the document root according to this
# environment variable.
ENV DOCUMENT_ROOT /app/public
WORKDIR $APP_DIR
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]