ARG EGEYA_VERSION=4199 ARG EGEYA_URL="" ARG EGEYA_SHA256="" FROM debian:bookworm-slim AS egeya-source ARG EGEYA_VERSION ARG EGEYA_URL ARG EGEYA_SHA256 RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends ca-certificates curl unzip; \ rm -rf /var/lib/apt/lists/*; \ archive_url="${EGEYA_URL:-https://blogengine.ru/download/e2_distr_v${EGEYA_VERSION}.zip}"; \ work_dir="$(mktemp -d)"; \ curl -fL \ --retry 5 \ --retry-delay 2 \ --connect-timeout 20 \ --user-agent "egeya-docker/${EGEYA_VERSION}" \ "$archive_url" \ -o "$work_dir/egeya.zip"; \ if [ -n "$EGEYA_SHA256" ]; then \ echo "$EGEYA_SHA256 $work_dir/egeya.zip" | sha256sum -c -; \ fi; \ mkdir -p "$work_dir/unpacked" /opt/egeya-release; \ unzip -q "$work_dir/egeya.zip" -d "$work_dir/unpacked"; \ if [ -f "$work_dir/unpacked/index.php" ]; then \ source_dir="$work_dir/unpacked"; \ else \ source_dir="$(find "$work_dir/unpacked" -maxdepth 2 -type f -name index.php -printf '%h\n' | head -n 1)"; \ fi; \ test -n "$source_dir"; \ cp -a "$source_dir"/. /opt/egeya-release/; \ test -f /opt/egeya-release/index.php; \ rm -rf "$work_dir" FROM php:8.2-fpm-bookworm AS php ENV EGEYA_ROOT=/var/www/html \ EGEYA_DATA_DIR=/var/www/egeya-data \ EGEYA_DEFAULTS_DIR=/opt/egeya-defaults RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ libavif-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ libonig-dev \ libpng-dev \ libwebp-dev \ libzip-dev \ pkg-config; \ docker-php-ext-configure gd \ --with-avif \ --with-freetype \ --with-jpeg \ --with-webp; \ docker-php-ext-install -j"$(nproc)" \ exif \ gd \ mbstring \ mysqli \ opcache \ pdo_mysql \ zip; \ mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"; \ rm -rf /var/lib/apt/lists/* COPY --from=egeya-source /opt/egeya-release/ /var/www/html/ RUN set -eux; \ mkdir -p "$EGEYA_DEFAULTS_DIR/user" "$EGEYA_DEFAULTS_DIR/pictures"; \ if [ -d "$EGEYA_ROOT/user" ]; then \ cp -a "$EGEYA_ROOT/user"/. "$EGEYA_DEFAULTS_DIR/user"/; \ fi; \ if [ -d "$EGEYA_ROOT/pictures" ]; then \ cp -a "$EGEYA_ROOT/pictures"/. "$EGEYA_DEFAULTS_DIR/pictures"/; \ fi; \ rm -rf "$EGEYA_ROOT/user" "$EGEYA_ROOT/pictures"; \ ln -s "$EGEYA_DATA_DIR/user" "$EGEYA_ROOT/user"; \ ln -s "$EGEYA_DATA_DIR/pictures" "$EGEYA_ROOT/pictures"; \ chown -R www-data:www-data "$EGEYA_ROOT" "$EGEYA_DEFAULTS_DIR" COPY docker/php/egeya-entrypoint.sh /usr/local/bin/egeya-entrypoint COPY docker/php/www-egeya.conf /usr/local/etc/php-fpm.d/zz-egeya.conf RUN chmod 0755 /usr/local/bin/egeya-entrypoint WORKDIR /var/www/html EXPOSE 9000 HEALTHCHECK --interval=15s --timeout=5s --start-period=20s --retries=5 \ CMD php -r '$s=@fsockopen("127.0.0.1",9000,$e,$m,2); if(!$s){exit(1);} fclose($s);' ENTRYPOINT ["egeya-entrypoint"] CMD ["php-fpm"] FROM nginx:1.28-bookworm AS nginx ENV EGEYA_ROOT=/var/www/html \ EGEYA_DATA_DIR=/var/www/egeya-data RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends curl; \ rm -rf /var/lib/apt/lists/*; \ if getent passwd www-data >/dev/null; then \ sed -ri 's/^user[[:space:]]+[^;]+;/user www-data;/' /etc/nginx/nginx.conf; \ fi COPY --from=egeya-source /opt/egeya-release/ /var/www/html/ RUN set -eux; \ rm -rf "$EGEYA_ROOT/user" "$EGEYA_ROOT/pictures"; \ ln -s "$EGEYA_DATA_DIR/user" "$EGEYA_ROOT/user"; \ ln -s "$EGEYA_DATA_DIR/pictures" "$EGEYA_ROOT/pictures"; \ rm -f /etc/nginx/conf.d/default.conf COPY docker/nginx/egeya.conf.template /etc/nginx/templates/egeya.conf.template WORKDIR /var/www/html EXPOSE 80 HEALTHCHECK --interval=15s --timeout=5s --start-period=20s --retries=5 \ CMD curl -fsS http://127.0.0.1/ >/dev/null || exit 1