575d48fdaf
- debian has once again passively agressively removed older curl versions from their packages, forcing us to bump the version in order to build our image
74 lines
2.6 KiB
Docker
74 lines
2.6 KiB
Docker
ARG NODE_ENV=production
|
|
|
|
FROM node:18-bookworm-slim@sha256:408f8cbbb7b33a5bb94bdb8862795a94d2b64c2d516856824fd86c4a5594a443 AS build-stage
|
|
|
|
ARG NODE_ENV
|
|
ENV NODE_ENV=${NODE_ENV}
|
|
|
|
WORKDIR /speckle-server
|
|
|
|
COPY .yarnrc.yml .
|
|
COPY .yarn ./.yarn
|
|
COPY package.json yarn.lock ./
|
|
|
|
COPY packages/frontend-2/type-augmentations/stubs ./packages/frontend-2/type-augmentations/stubs/
|
|
COPY packages/webhook-service/package.json ./packages/webhook-service/
|
|
COPY packages/shared/package.json ./packages/shared/
|
|
|
|
RUN yarn workspaces focus --all
|
|
|
|
COPY packages/shared ./packages/shared/
|
|
COPY packages/webhook-service/src ./packages/webhook-service/
|
|
|
|
RUN yarn workspaces foreach -W run build
|
|
|
|
ARG WAIT_VERSION=2.8.0
|
|
ENV WAIT_VERSION=${WAIT_VERSION}
|
|
ARG TINI_VERSION=v0.19.0
|
|
ENV TINI_VERSION=${TINI_VERSION}
|
|
RUN apt-get update -y \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
|
--no-install-recommends \
|
|
ca-certificates=20230311 \
|
|
curl=7.88.1-10+deb12u12 \
|
|
&& curl -fsSL https://github.com/ufoscout/docker-compose-wait/releases/download/${WAIT_VERSION}/wait -o ./wait \
|
|
&& chmod +x ./wait \
|
|
&& curl -fsSL https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini -o ./tini \
|
|
&& chmod +x ./tini \
|
|
&& apt-get remove -y curl \
|
|
&& apt-get autoremove -y \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM node:18-bookworm-slim@sha256:408f8cbbb7b33a5bb94bdb8862795a94d2b64c2d516856824fd86c4a5594a443 AS dependency-stage
|
|
# yarn install
|
|
ARG NODE_ENV
|
|
ENV NODE_ENV=${NODE_ENV}
|
|
|
|
WORKDIR /speckle-server
|
|
|
|
COPY .yarnrc.yml .
|
|
COPY .yarn ./.yarn
|
|
COPY package.json yarn.lock ./
|
|
|
|
COPY packages/frontend-2/type-augmentations/stubs ./packages/frontend-2/type-augmentations/stubs/
|
|
COPY packages/webhook-service/package.json ./packages/webhook-service/
|
|
COPY packages/shared/package.json ./packages/shared/
|
|
|
|
WORKDIR /speckle-server/packages/webhook-service
|
|
RUN yarn workspaces focus --production
|
|
|
|
FROM gcr.io/distroless/nodejs18-debian12:nonroot@sha256:afdea027580f7afcaf1f316b2b3806690c297cb3ce6ddc5cf6a15804dc1c790f AS production-stage
|
|
ARG NODE_ENV
|
|
ENV NODE_ENV=${NODE_ENV}
|
|
|
|
WORKDIR /speckle-server/packages/webhook-service/
|
|
COPY packages/webhook-service/src .
|
|
COPY --link --from=build-stage /speckle-server/wait /usr/bin/wait
|
|
COPY --link --from=build-stage /speckle-server/tini /usr/bin/tini
|
|
COPY --link --from=build-stage /speckle-server/packages/shared ./packages/shared
|
|
COPY --link --from=build-stage /speckle-server/packages/webhook-service ./packages/webhook-service
|
|
COPY --link --from=dependency-stage /speckle-server/node_modules ./node_modules
|
|
|
|
ENTRYPOINT [ "tini", "--", "/nodejs/bin/node", "main.js"]
|