website/Dockerfile
Jeroen De Meerleer f8f3b55382
Add Docker setup for PHP application
- Created a Dockerfile to set up a PHP 8.3 environment with Apache.
- Configured document root and timezone settings.
- Installed Composer and necessary PHP extensions.
- Added custom entrypoint and foreground scripts for Apache.
- Set up environment variable handling in the entrypoint script.
- Included commands for cache clearing and warming during startup.
2025-01-20 17:28:43 +01:00

40 lines
1.5 KiB
Docker

FROM php:8.3-apache AS runtime
ENV APACHE_DOCUMENT_ROOT=/var/www/website/public/
ENV WEBSITE_ROOT=/var/www/website/
ENV TZ=Europe/Brussels
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV DEBIAN_FRONTEND=noninteractive
COPY . ${APACHE_DOCUMENT_ROOT}
RUN sed -ri -e "s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/sites-available/*.conf
RUN sed -ri -e "s!/var/www/!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN a2enmod rewrite
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin
RUN set -eux; \
chmod uga+x /usr/local/bin/install-php-extensions && sync
RUN set -eux;install-php-extensions intl zip
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN printf "[PHP]\ndate.timezone = \"$TZ\"\n" > /usr/local/etc/php/conf.d/tzone.ini
COPY docker-resources/apache2-foreground /usr/local/bin/apache2-foreground
COPY docker-resources/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN set -eux; \
chmod uga+x /usr/local/bin/entrypoint.sh && \
chmod uga+x /usr/local/bin/apache2-foreground && sync
USER www-data
WORKDIR ${WEBSITE_ROOT}
RUN mv .env.sample .env
RUN composer install
RUN php bin/console asset-map:compile
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]