1
1
# ################## Asset Builder
2
2
3
3
FROM node:22 AS build-assets
4
+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
4
5
ENV NO_UPDATE_NOTIFIER=1
5
6
6
7
WORKDIR /build/
7
8
8
- COPY package.json package-lock.json .
9
+ COPY package.json package-lock.json ./
9
10
RUN \
10
11
--mount=type=cache,target=/root/.npm,sharing=private \
11
- <<EOT /bin/bash -euo pipefail
12
+ <<EOT
12
13
npm install --verbose
13
14
npm audit fix
14
15
EOT
15
16
16
17
# not supported yet
17
18
# COPY --parents build-assets.mjs root/static .
18
19
19
- COPY build-assets.mjs .
20
+ COPY build-assets.mjs ./
20
21
COPY root/static root/static
21
- RUN <<EOT /bin/bash -euo pipefail
22
+ RUN <<EOT
22
23
npm run build:min
23
24
EOT
24
25
25
26
# ################## Web Server
27
+ # hadolint ignore=DL3007
26
28
FROM metacpan/metacpan-base:latest AS server
29
+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
27
30
28
31
RUN \
29
32
--mount=type=cache,target=/var/cache/apt,sharing=private \
30
33
--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)'
34
37
EOT
35
38
36
39
WORKDIR /metacpan-web/
37
40
38
- COPY cpanfile cpanfile.snapshot .
41
+ COPY cpanfile cpanfile.snapshot ./
39
42
RUN \
40
43
--mount=type=cache,target=/root/.perl-cpm,sharing=private \
41
44
<<EOT /bin/bash -euo pipefail
42
- cpm install
45
+ cpm install --show-build-log-on-failure
43
46
EOT
44
47
45
48
RUN mkdir var && chown metacpan:users var
@@ -85,6 +88,7 @@ CMD [ \
85
88
86
89
# ################## Test Runner
87
90
FROM develop AS test
91
+ SHELL [ "/bin/bash" , "-euo" , "pipefail" , "-c" ]
88
92
89
93
ENV NO_UPDATE_NOTIFIER=1
90
94
ENV PLACK_ENV=
@@ -97,12 +101,12 @@ RUN \
97
101
--mount=type=cache,target=/root/.npm,sharing=private \
98
102
<<EOT /bin/bash -euo pipefail
99
103
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
103
107
EOT
104
108
105
- COPY package.json package-lock.json .
109
+ COPY package.json package-lock.json ./
106
110
RUN \
107
111
--mount=type=cache,target=/root/.npm,sharing=private \
108
112
<<EOT /bin/bash -euo pipefail
113
117
RUN \
114
118
--mount=type=cache,target=/root/.perl-cpm \
115
119
<<EOT /bin/bash -euo pipefail
116
- cpm install --with-test
120
+ cpm install --show-build-log-on-failure -- with-test
117
121
EOT
118
122
119
123
COPY .perlcriticrc .perltidyrc perlimports.toml tidyall.ini ./
0 commit comments