|
1 |
| -# syntax=docker/dockerfile:1 |
| 1 | +# syntax=docker/dockerfile:1.9@sha256:5510f694edfe648d961b59dcf217026485e560d2663c73e45067b8c8d7a6d247 |
2 | 2 |
|
3 | 3 | ### Stage 1: build client
|
4 |
| -FROM node:20 as client-builder |
| 4 | +FROM node:20 AS client-builder |
5 | 5 | WORKDIR /client-builder
|
6 | 6 |
|
7 | 7 | # Install node packages
|
8 |
| -COPY package.json . |
9 |
| -COPY client/package.json client/ |
10 |
| -COPY client/package-lock.json client/ |
11 |
| -RUN npm run install-dependencies:client |
| 8 | +RUN --mount=type=bind,source=package.json,target=package.json \ |
| 9 | + --mount=type=bind,source=client/package.json,target=client/package.json \ |
| 10 | + --mount=type=bind,source=client/package-lock.json,target=client/package-lock.json \ |
| 11 | + --mount=type=cache,sharing=locked,id=npmcache,mode=0777,target=/root/.npm \ |
| 12 | + npm run install-dependencies-ci:client |
12 | 13 |
|
13 | 14 | # Build client
|
14 | 15 | COPY client/ client/
|
15 |
| -RUN npm run build |
| 16 | +RUN --mount=type=bind,source=package.json,target=package.json \ |
| 17 | + --mount=type=bind,source=client/package.json,target=client/package.json \ |
| 18 | + --mount=type=bind,source=client/package-lock.json,target=client/package-lock.json \ |
| 19 | + --mount=type=cache,sharing=locked,id=npmcache,mode=0777,target=/root/.npm \ |
| 20 | + npm run build |
16 | 21 |
|
17 | 22 |
|
18 | 23 | ### Stage 2: final container
|
19 |
| -FROM php:8.2-apache |
| 24 | +FROM php:8.3-apache |
20 | 25 | # Install runtime & development package dependencies & php extensions
|
21 | 26 | # then clean-up dev package dependencies
|
22 | 27 | RUN export DEBIAN_FRONTEND=noninteractive \
|
23 |
| - && apt update \ |
24 |
| - && apt install -y --no-install-recommends \ |
25 |
| - unzip \ |
26 |
| - libjpeg62-turbo libpng16-16 libpq5 libonig5 libtidy5deb1 \ |
27 |
| - libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \ |
28 |
| - && update-ca-certificates --fresh \ |
29 |
| - && docker-php-ext-configure gd --with-jpeg \ |
30 |
| - && docker-php-ext-install gd mbstring pdo_pgsql pdo_mysql tidy \ |
31 |
| - && apt remove -y libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \ |
32 |
| - && apt autoremove -y \ |
33 |
| - && apt clean \ |
34 |
| - && rm -rf /var/lib/apt/lists/* |
| 28 | + && apt update \ |
| 29 | + && apt install -y --no-install-recommends \ |
| 30 | + unzip \ |
| 31 | + libjpeg62-turbo libpng16-16 libpq5 libonig5 libtidy5deb1 \ |
| 32 | + libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \ |
| 33 | + && update-ca-certificates --fresh \ |
| 34 | + && docker-php-ext-configure gd --with-jpeg \ |
| 35 | + && docker-php-ext-install -j$(nproc) gd mbstring pdo_pgsql pdo_mysql tidy \ |
| 36 | + && apt remove -y libjpeg62-turbo-dev libpng-dev libpq-dev libonig-dev libtidy-dev \ |
| 37 | + && apt autoremove -y \ |
| 38 | + && apt clean \ |
| 39 | + && rm -rf /var/lib/apt/lists/* |
35 | 40 |
|
36 | 41 | # Install Apache modules
|
37 | 42 | RUN a2enmod headers rewrite
|
38 | 43 |
|
39 | 44 | # Install Selfoss PHP dependencies
|
40 |
| -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer |
41 |
| -COPY composer.json . |
42 |
| -COPY composer.lock . |
43 |
| -RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-dev |
44 |
| -RUN rm /usr/bin/composer |
| 45 | +RUN --mount=type=bind,source=composer.json,target=composer.json \ |
| 46 | + --mount=type=bind,source=composer.lock,target=composer.lock \ |
| 47 | + --mount=type=bind,from=composer:2,source=/usr/bin/composer,target=/usr/bin/composer \ |
| 48 | + COMPOSER_ALLOW_SUPERUSER=1 composer install --optimize-autoloader --no-dev |
45 | 49 |
|
46 | 50 | # Install Selfoss and copy frontend from the first stage
|
47 | 51 | WORKDIR /var/www/html
|
|
0 commit comments