1
+ # syntax=docker/dockerfile:1
2
+
1
3
# ## Stage 1: build client
2
- FROM node:18 as client-builder
4
+ FROM node:20 as client-builder
3
5
WORKDIR /client-builder
4
6
5
7
# Install node packages
@@ -15,41 +17,38 @@ RUN npm run build
15
17
16
18
# ## Stage 2: final container
17
19
FROM 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 \
20
27
&& 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 \
21
32
&& apt clean \
22
33
&& rm -rf /var/lib/apt/lists/*
23
34
24
- RUN docker-php-ext-configure gd \
25
- && docker-php-ext-install gd mbstring pdo_pgsql pdo_mysql tidy
26
-
35
+ # Install Apache modules
27
36
RUN a2enmod headers rewrite
28
37
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
35
40
COPY composer.json .
36
41
COPY composer.lock .
37
42
RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-dev
43
+ RUN rm /usr/bin/composer
38
44
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
44
46
WORKDIR /var/www/html
45
-
46
47
COPY . .
47
-
48
48
COPY --from=client-builder /client-builder/public /var/www/html/public
49
49
50
+ # Use www-data user as owner and drop root user
50
51
RUN 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
54
53
55
54
VOLUME /var/www/html/data
0 commit comments