# ---- Builder ---- FROM php:8.3-apache AS builder LABEL org.opencontainers.image.authors="at@unacms.com" \ org.opencontainers.image.description="UNA PHP application" \ org.opencontainers.image.vendor="UNACMS" USER root # PHP extensions and necessary packages RUN apt-get update && apt-get install -y --no-install-recommends \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ libwebp-dev \ libonig-dev \ libmagickwand-dev \ libzip-dev \ && docker-php-ext-install -j$(nproc) exif \ && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-install -j$(nproc) mbstring \ && docker-php-ext-install -j$(nproc) opcache \ && docker-php-ext-install -j$(nproc) pdo \ && docker-php-ext-install -j$(nproc) pdo_mysql \ && docker-php-ext-install -j$(nproc) zip \ && pecl install imagick \ && docker-php-ext-enable imagick \ && rm -rf /var/lib/apt/lists/* # ---- Runtime ---- FROM php:8.3-apache RUN apt-get update && apt-get install -y --no-install-recommends \ cron \ libfreetype6 \ libjpeg62-turbo \ libpng16-16 \ libwebp7 \ libonig5 \ imagemagick \ libzip5 \ unzip \ && rm -rf /var/lib/apt/lists/* /tmp/* # Copy compiled extensions COPY --from=builder /usr/local/lib/php/extensions/ /usr/local/lib/php/extensions/ COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ # ENV vars ENV UNA_USER="www-una" \ UNA_ROOT_DIR="/var/www/html/" \ UNA_JAVA_PATH="" \ VAR_DEF_DB_HOST="localhost" \ VAR_DEF_DB_PORT="3306" \ VAR_DEF_DB_USER="root" \ VAR_DEF_DB_PWD="root" \ VAR_DEF_HTTP_HOST="localhost" \ VAR_DEF_TITLE="UNA" \ VAR_DEF_USERNAME="admin" \ VAR_DEF_ADMIN_PWD="admin" \ VAR_DEF_EMAIL="admin@example.com" \ VAR_DEF_DB_ENGINE="MYISAM" \ VAR_DEF_AUTO_HOSTNAME=0 \ VAR_DEF_VERSION="14.0.0" \ APACHE_RUN_USER="www-una" \ APACHE_RUN_GROUP="www-una" # User & folder RUN groupadd -r --gid 2483 $UNA_USER \ && useradd -r --uid 2483 -g $UNA_USER $UNA_USER \ && chown $UNA_USER:$UNA_USER /var/www/html /var/www # Apache configuration RUN echo "memory_limit=192M \n\ post_max_size=100M \n\ upload_max_filesize=100M \n\ error_log=/var/log/php/error.log \n\ error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT \n\ display_errors=Off \n\ log_errors=On \n\ date.timezone=UTC" > /usr/local/etc/php/conf.d/una.ini RUN mkdir /var/log/php && mkdir /var/www/ssl && chown $UNA_USER:$UNA_USER /var/log/php && chmod 777 /var/log/php && su $UNA_USER -c "ln -s /dev/stderr /var/log/php/error.log; ln -s /dev/stderr /var/www/cron.log" RUN a2enmod rewrite expires ssl # Expose port and set volume WORKDIR /var/www/html COPY header.inc.php /srv/ RUN set -eux; \ su "$UNA_USER" -c "\ curl -fSL \"http://ci.una.io/builds/UNA-v.${VAR_DEF_VERSION}.zip\" -o una.zip && \ unzip -o una.zip && \ rm una.zip && \ mv \"UNA-v.${VAR_DEF_VERSION}\"/* . && \ mv \"UNA-v.${VAR_DEF_VERSION}\"/.htaccess . && \ rm -rf \"UNA-v.${VAR_DEF_VERSION}\" && \ chmod 777 inc cache cache_public logs tmp storage && \ chmod +x plugins/ffmpeg/ffmpeg.exe && \ \\cp -f --no-preserve=mode,ownership /srv/header.inc.php install/patterns/ \ " VOLUME /var/www EXPOSE 80 # Entrypoint COPY docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] CMD ["apache2-foreground"]