Skip to content

Commit 67144b8

Browse files
committed
build: fix Dockerfile
Signed-off-by: Mogyuchi <mogyuchi@mogyuchi.jp>
1 parent a378eb1 commit 67144b8

File tree

1 file changed

+32
-48
lines changed

1 file changed

+32
-48
lines changed

Dockerfile

Lines changed: 32 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,52 @@
11
# syntax=docker/dockerfile:1@sha256:ac85f380a63b13dfcefa89046420e1781752bab202122f8f50032edf31be0021
22

3-
FROM buildpack-deps:bookworm AS model-fetch
4-
WORKDIR /app
5-
RUN wget https://github.com/jpreprocess/jpreprocess/releases/download/v0.6.1/naist-jdic-jpreprocess.tar.gz \
6-
&& tar xzf naist-jdic-jpreprocess.tar.gz \
7-
&& rm naist-jdic-jpreprocess.tar.gz
8-
RUN git clone --depth 1 https://github.com/icn-lab/htsvoice-tohoku-f01.git
9-
10-
FROM ghcr.io/jqlang/jq:1.7 as fetch-jq
11-
12-
FROM quay.io/curl/curl-base:8.4.0 as fetch-pnpm
3+
# ビルド時に基礎として使うイメージを定義
4+
FROM buildpack-deps:bookworm as base-build
135
ENV SHELL="sh"
146
ENV ENV="/tmp/env"
157
ENV PNPM_HOME="/pnpm"
16-
WORKDIR /dist
17-
RUN --mount=type=bind,source=package.json,target=package.json \
18-
--mount=type=bind,from=fetch-jq,source=/jq,target=/mounted-bin/jq \
19-
curl -fsSL --compressed https://get.pnpm.io/install.sh | env PNPM_VERSION=$(cat package.json | /mounted-bin/jq -r .packageManager | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') sh -
20-
21-
FROM buildpack-deps:bookworm as fetch-deps
22-
ENV PNPM_HOME="/pnpm"
238
ENV PATH="$PNPM_HOME:$PATH"
24-
WORKDIR /package
25-
COPY --link --from=fetch-pnpm /pnpm/ /pnpm/
26-
RUN pnpm config set store-dir /.pnpm-store
27-
COPY --link .npmrc .node-version ./
28-
RUN echo "use-node-version=`cat .node-version`" >> .npmrc
29-
RUN --mount=type=cache,target=/.pnpm-store \
30-
--mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
31-
pnpm fetch
32-
COPY --link package.json ./
33-
34-
FROM fetch-deps as dev-deps
35-
RUN --mount=type=cache,target=/.pnpm-store \
36-
--mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
37-
pnpm install --frozen-lockfile --offline
9+
# jqのバイナリを取得する => /jq
10+
FROM ghcr.io/jqlang/jq:1.7 as fetch-jq
3811

39-
FROM buildpack-deps:bookworm as builder
40-
ENV PNPM_HOME="/pnpm"
41-
ENV PATH="$PNPM_HOME:$PATH"
12+
# 音声モデルを取得する => /app/
13+
FROM --platform=$BUILDPLATFORM base-build AS model-fetch
4214
WORKDIR /app
43-
RUN --mount=type=bind,from=fetch-deps,source=/pnpm/,target=/pnpm/ \
44-
--mount=type=bind,from=dev-deps,source=/package/node_modules/,target=node_modules/ \
45-
--mount=type=bind,source=package.json,target=package.json \
46-
--mount=type=bind,source=.npmrc,target=.npmrc \
47-
--mount=type=bind,source=build.js,target=build.js \
48-
--mount=type=bind,source=src/,target=src/ \
49-
pnpm build
15+
RUN wget https://github.com/jpreprocess/jpreprocess/releases/download/v0.6.1/naist-jdic-jpreprocess.tar.gz \
16+
&& tar xzf naist-jdic-jpreprocess.tar.gz \
17+
&& rm naist-jdic-jpreprocess.tar.gz
18+
RUN git clone --depth 1 https://github.com/icn-lab/htsvoice-tohoku-f01.git
5019

51-
FROM fetch-deps as prod-deps
20+
FROM base-build as deps
21+
WORKDIR /app
22+
COPY --link --from=fetch-jq /jq ./
23+
COPY --link package.json ./
24+
RUN curl -fsSL --compressed https://get.pnpm.io/install.sh | env PNPM_VERSION=$(cat package.json | ./jq -r .packageManager | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') sh -
25+
COPY --link .npmrc .node-version ./
26+
RUN echo "store-dir=/.pnpm-store" >> .npmrc &&\
27+
echo "use-node-version=`cat .node-version`" >> .npmrc
28+
COPY --link pnpm-lock.yaml ./
5229
ARG NODE_ENV="production"
53-
RUN --mount=type=cache,target=/.pnpm-store \
54-
--mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \
55-
pnpm install --frozen-lockfile --offline
30+
RUN pnpm install --frozen-lockfile
31+
32+
# ビルドする => /app/dist/
33+
FROM --platform=$BUILDPLATFORM deps as builder
34+
ARG NODE_ENV=""
35+
RUN pnpm install --frozen-lockfile
36+
COPY --link build.js ./
37+
COPY --link src/ ./src/
38+
RUN pnpm build
5639

5740
FROM gcr.io/distroless/cc-debian12:nonroot as runner
5841
ENV PNPM_HOME="/pnpm"
5942
ENV PATH="$PNPM_HOME:$PATH"
6043
ENV NODE_ENV="production"
6144
WORKDIR /app
6245
COPY --link --from=model-fetch /app/ ./model/
63-
COPY --link --from=fetch-deps /pnpm/ /pnpm/
46+
COPY --link --from=deps /pnpm/ /pnpm/
6447
COPY --link --from=builder /app/dist/ ./dist/
65-
COPY --from=prod-deps /package/node_modules/ ./node_modules/
66-
COPY --link .npmrc package.json ./
48+
COPY --from=deps /app/node_modules/ ./node_modules/
49+
COPY --link --from=deps /app/.npmrc ./
50+
COPY --link package.json ./
6751
ENTRYPOINT [ "pnpm", "--shell-emulator" ]
6852
CMD [ "start" ]

0 commit comments

Comments
 (0)