# Setup php, apache and stud.ip FROM php:8.1-apache as base # Install system requirements RUN apt update && apt install -y --no-install-recommends \ default-mysql-client \ default-libmysqlclient-dev \ libcurl4-openssl-dev zlib1g-dev \ libpng-dev \ libjpeg-dev \ libonig-dev \ libzip-dev \ libicu-dev \ libwebp-dev \ locales \ vim \ && rm -rf /var/lib/apt/lists/* # Install locales RUN sed -i -e 's/# en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen \ && sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \ && dpkg-reconfigure --frontend=noninteractive locales \ && update-locale # Install php extensions RUN docker-php-ext-configure gd --with-jpeg --with-webp RUN docker-php-ext-install gettext gd zip pdo_mysql mysqli intl FROM node:18 as nodejs # Install node modules COPY . /studip WORKDIR /studip RUN make webpack-prod FROM base as build # Install composer COPY --from=composer /usr/bin/composer /usr/bin/composer # Copy studip COPY --from=nodejs /studip /studip # Execute make to install composer dependencies and build assets WORKDIR /studip RUN make composer FROM base # Reconfigure apache ENV APACHE_DOCUMENT_ROOT /var/www/studip/public 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 COPY --from=build /studip /var/www/studip WORKDIR /var/www/studip # Add config template COPY ./docker/studip/config_local.php ./config/config_local.inc.php # Copy config RUN cp ./config/config.inc.php.dist ./config/config.inc.php # Add custom entrypoint COPY ./docker/studip/docker-entrypoint.sh /usr/local/bin/ RUN chmod u+x /usr/local/bin/docker-entrypoint.sh # Set start parameters ENV AUTO_MIGRATE 1 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["apache2-foreground"]