11# ################## Asset Builder
22
33FROM node:22 AS build-assets
4+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
45ENV NO_UPDATE_NOTIFIER=1
56
67WORKDIR /build/
78
8- COPY package.json package-lock.json .
9+ COPY package.json package-lock.json ./
910RUN \
1011 --mount=type=cache,target=/root/.npm,sharing=private \
11- <<EOT /bin/bash -euo pipefail
12+ <<EOT
1213 npm install --verbose
1314 npm audit fix
1415EOT
1516
1617# not supported yet
1718# COPY --parents build-assets.mjs root/static .
1819
19- COPY build-assets.mjs .
20+ COPY build-assets.mjs ./
2021COPY root/static root/static
21- RUN <<EOT /bin/bash -euo pipefail
22+ RUN <<EOT
2223 npm run build:min
2324EOT
2425
2526# ################## Web Server
27+ # hadolint ignore=DL3007
2628FROM metacpan/metacpan-base:latest AS server
29+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
2730
2831RUN \
2932 --mount=type=cache,target=/var/cache/apt,sharing=private \
3033 --mount=type=cache,target=/var/lib/apt/lists,sharing=private \
31- <<EOT /bin/bash -euo pipefail
32- apt update
33- apt install -y -f libcmark-dev
34+ <<EOT
35+ apt-get update
36+ apt-get satisfy -y -f --no-install-recommends ' libcmark-dev (>= 0.30.2)'
3437EOT
3538
3639WORKDIR /metacpan-web/
3740
38- COPY cpanfile cpanfile.snapshot .
41+ COPY cpanfile cpanfile.snapshot ./
3942RUN \
4043 --mount=type=cache,target=/root/.perl-cpm,sharing=private \
4144<<EOT /bin/bash -euo pipefail
42- cpm install
45+ cpm install --show-build-log-on-failure
4346EOT
4447
4548RUN mkdir var && chown metacpan:users var
@@ -85,6 +88,7 @@ CMD [ \
8588
8689# ################## Test Runner
8790FROM develop AS test
91+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
8892
8993ENV NO_UPDATE_NOTIFIER=1
9094ENV PLACK_ENV=
@@ -97,12 +101,12 @@ RUN \
97101 --mount=type=cache,target=/root/.npm,sharing=private \
98102<<EOT /bin/bash -euo pipefail
99103 curl -fsSL https://deb.nodesource.com/setup_21.x | bash -
100- apt update
101- apt install -y -f --no-install-recommends nodejs
102- npm install -g npm
104+ apt-get update
105+ apt-get satisfy -y -f --no-install-recommends ' nodejs (>= 21.6.1)'
106+ npm install -g npm@^10.4.0
103107EOT
104108
105- COPY package.json package-lock.json .
109+ COPY package.json package-lock.json ./
106110RUN \
107111 --mount=type=cache,target=/root/.npm,sharing=private \
108112<<EOT /bin/bash -euo pipefail
113117RUN \
114118 --mount=type=cache,target=/root/.perl-cpm \
115119<<EOT /bin/bash -euo pipefail
116- cpm install --with-test
120+ cpm install --show-build-log-on-failure -- with-test
117121EOT
118122
119123COPY .perlcriticrc .perltidyrc perlimports.toml tidyall.ini ./
0 commit comments