mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-01-15 01:17:57 -05:00
81 lines
2.5 KiB
Docker
81 lines
2.5 KiB
Docker
# syntax = docker/dockerfile:1 # use BuildKit
|
|
|
|
FROM node:16-slim as base
|
|
WORKDIR /usr/src/app
|
|
|
|
# Install dependencies not included in the slim image
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates g++ git make python \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install dependencies for dev and prod
|
|
COPY tsconfig.base.json .
|
|
COPY tsconfig.json .
|
|
COPY lerna.json .
|
|
COPY schema.graphql .
|
|
COPY package.json .
|
|
COPY yarn.lock .
|
|
COPY packages/web/codegen.yml ./packages/web/
|
|
COPY packages/web/*.json ./packages/web/
|
|
COPY packages/web/graphql ./packages/web/graphql/
|
|
COPY packages/utils/*.json ./packages/utils/
|
|
COPY packages/design-system/*.json ./packages/design-system/
|
|
|
|
RUN ["yarn", "policies", "set-version", "1.15.2"]
|
|
RUN ["yarn", "install", "--pure-lockfile"]
|
|
|
|
# Dev environment doesn't run this stage or beyond
|
|
FROM base as build
|
|
|
|
# Set env vars
|
|
ARG GRAPHQL_HOST=hasura
|
|
ARG GRAPHQL_DOMAIN=onrender.com
|
|
ARG GRAPHQL_URL=https://$GRAPHQL_HOST.$GRAPHQL_DOMAIN/v1/graphql
|
|
|
|
ENV NEXT_PUBLIC_GRAPHQL_URL="$GRAPHQL_URL"
|
|
|
|
# Copy source files
|
|
COPY packages/@types ./packages/@types/
|
|
COPY packages/utils ./packages/utils/
|
|
COPY packages/design-system ./packages/design-system/
|
|
COPY packages/web ./packages/web/
|
|
|
|
# Build
|
|
RUN ["yarn", "web:build"]
|
|
|
|
# Delete devDependencies
|
|
RUN ["yarn", "install", "--pure-lockfile", \
|
|
"--production", "--ignore-scripts", \
|
|
"--prefer-offline"]
|
|
|
|
# Create completely new stage including only necessary files
|
|
FROM node:16-alpine as app
|
|
WORKDIR /app
|
|
|
|
# Copy necessary files into the stage
|
|
COPY --from=build /usr/src/app/packages/utils/package.json \
|
|
./packages/utils/package.json
|
|
COPY --from=build /usr/src/app/packages/utils/dist \
|
|
./packages/utils/dist
|
|
COPY --from=build /usr/src/app/packages/utils/node_modules \
|
|
./packages/utils/node_modules
|
|
|
|
COPY --from=build /usr/src/app/packages/design-system/package.json \
|
|
./packages/design-system/package.json
|
|
COPY --from=build /usr/src/app/packages/design-system/dist \
|
|
./packages/design-system/dist
|
|
|
|
COPY --from=build /usr/src/app/package.json ./package.json
|
|
COPY --from=build /usr/src/app/node_modules ./node_modules
|
|
|
|
COPY --from=build /usr/src/app/packages/web/package.json \
|
|
./packages/web/package.json
|
|
COPY --from=build /usr/src/app/packages/web/public \
|
|
./packages/web/public
|
|
COPY --from=build /usr/src/app/packages/web/.next \
|
|
./packages/web/.next
|
|
|
|
CMD ["yarn", "web", "start"]
|