FROM rust:1.58.1-alpine3.14 as prisma ENV RUSTFLAGS="-C target-feature=-crt-static" RUN apk --no-cache add openssl direnv git musl-dev openssl-dev build-base perl protoc RUN git clone --depth=1 --branch=3.15.x https://github.com/prisma/prisma-engines.git /prisma WORKDIR /prisma RUN cargo build --release FROM alpine:3.16 AS deps RUN mkdir -p /prisma-engines WORKDIR /build COPY .yarn .yarn COPY package.json yarn.lock .yarnrc.yml ./ RUN apk add --no-cache nodejs yarn RUN yarn install --immutable FROM alpine:3.16 AS builder WORKDIR /build COPY --from=prisma /prisma/target/release/query-engine /prisma/target/release/migration-engine /prisma/target/release/introspection-engine /prisma/target/release/prisma-fmt /prisma-engines/ ENV PRISMA_QUERY_ENGINE_BINARY=/prisma-engines/query-engine \ PRISMA_MIGRATION_ENGINE_BINARY=/prisma-engines/migration-engine \ PRISMA_INTROSPECTION_ENGINE_BINARY=/prisma-engines/introspection-engine \ PRISMA_FMT_BINARY=/prisma-engines/prisma-fmt \ PRISMA_CLI_QUERY_ENGINE_TYPE=binary \ PRISMA_CLIENT_ENGINE_TYPE=binary RUN apk add --no-cache nodejs yarn openssl openssl-dev COPY --from=deps /build/node_modules ./node_modules COPY src ./src COPY scripts ./scripts COPY prisma ./prisma COPY .yarn .yarn COPY package.json yarn.lock .yarnrc.yml esbuild.config.js next.config.js next-env.d.ts zip-env.d.ts tsconfig.json ./ ENV ZIPLINE_DOCKER_BUILD 1 ENV NEXT_TELEMETRY_DISABLED 1 RUN yarn build FROM alpine:3.16 AS runner WORKDIR /zipline COPY --from=prisma /prisma/target/release/query-engine /prisma/target/release/migration-engine /prisma/target/release/introspection-engine /prisma/target/release/prisma-fmt /prisma-engines/ ENV PRISMA_QUERY_ENGINE_BINARY=/prisma-engines/query-engine \ PRISMA_MIGRATION_ENGINE_BINARY=/prisma-engines/migration-engine \ PRISMA_INTROSPECTION_ENGINE_BINARY=/prisma-engines/introspection-engine \ PRISMA_FMT_BINARY=/prisma-engines/prisma-fmt \ PRISMA_CLI_QUERY_ENGINE_TYPE=binary \ PRISMA_CLIENT_ENGINE_TYPE=binary RUN apk add --no-cache nodejs yarn openssl openssl-dev ENV NODE_ENV production ENV NEXT_TELEMETRY_DISABLED 1 COPY --from=builder /build/.next ./.next COPY --from=builder /build/dist ./dist COPY --from=builder /build/node_modules ./node_modules COPY --from=builder /build/next.config.js ./next.config.js COPY --from=builder /build/src ./src COPY --from=builder /build/scripts ./scripts COPY --from=builder /build/prisma ./prisma COPY --from=builder /build/tsconfig.json ./tsconfig.json COPY --from=builder /build/package.json ./package.json CMD ["node", "dist/server"]