1+ # syntax=docker/dockerfile:1
2+
13# ## Stage 1: build client
2- FROM node:18 as client-builder
4+ FROM node:20 as client-builder
35WORKDIR /client-builder
46
57# Install node packages
@@ -15,41 +17,38 @@ RUN npm run build
1517
1618# ## Stage 2: final container
1719FROM php:8.2-apache
18- RUN apt-get update \
19- && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y cron unzip libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \
20+ # Install package & php dependencies, clean-up dev package dependencies after
21+ RUN export DEBIAN_FRONTEND=noninteractive \
22+ && apt update \
23+ && apt install -y --no-install-recommends \
24+ unzip \
25+ libjpeg62-turbo libpng16-16 libpq5 libonig5 libtidy5deb1 \
26+ libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \
2027 && update-ca-certificates --fresh \
28+ && docker-php-ext-configure gd --with-jpeg \
29+ && docker-php-ext-install gd mbstring pdo_pgsql pdo_mysql tidy \
30+ && apt remove -y libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \
31+ && apt autoremove -y \
2132 && apt clean \
2233 && rm -rf /var/lib/apt/lists/*
2334
24- RUN docker-php-ext-configure gd \
25- && docker-php-ext-install gd mbstring pdo_pgsql pdo_mysql tidy
26-
35+ # Install Apache modules
2736RUN a2enmod headers rewrite
2837
29- RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
30- && php composer-setup.php \
31- && php -r "unlink('composer-setup.php');" \
32- && mv composer.phar /usr/local/bin/composer
33-
34- # Install dependencies
38+ # Install PHP dependencies
39+ COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
3540COPY composer.json .
3641COPY composer.lock .
3742RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-dev
43+ RUN rm /usr/bin/composer
3844
39- # Setup cron
40- RUN echo '* * * * * curl http://localhost/update' | tee /etc/cron.d/selfoss \
41- && chmod 0644 /etc/cron.d/selfoss \
42- && crontab /etc/cron.d/selfoss
43-
45+ # Install selfoss, copy frontend from the first stage
4446WORKDIR /var/www/html
45-
4647COPY . .
47-
4848COPY --from=client-builder /client-builder/public /var/www/html/public
4949
50+ # Use www-data user as owner and drop root user
5051RUN chown -R www-data:www-data /var/www/html/data
51-
52- # Overload default command to run cron in the background
53- RUN sed -i 's/^exec /service cron start\n\n exec /' /usr/local/bin/apache2-foreground
52+ USER www-data
5453
5554VOLUME /var/www/html/data
0 commit comments