mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-04-24 03:00:09 -04:00
broke long lines, added BuildKit run command, & reordered COPY steps 🎽
This commit is contained in:
@@ -1,61 +1,76 @@
|
||||
# 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 g++ make python
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
g++ make python \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install dependencies for dev and prod
|
||||
COPY package.json .
|
||||
COPY lerna.json .
|
||||
COPY yarn.lock .
|
||||
COPY schema.graphql .
|
||||
# Install dependencies for dev and prod in order of likelihood to change
|
||||
COPY tsconfig.base.json .
|
||||
COPY packages/backend/*.json ./packages/backend/
|
||||
COPY packages/utils/*.json ./packages/utils/
|
||||
COPY lerna.json .
|
||||
COPY schema.graphql .
|
||||
COPY packages/discord-bot/*.json ./packages/discord-bot/
|
||||
COPY packages/utils/*.json ./packages/utils/
|
||||
COPY package.json .
|
||||
COPY yarn.lock .
|
||||
COPY packages/backend/*.json ./packages/backend/
|
||||
|
||||
RUN yarn install --pure-lockfile
|
||||
RUN ["yarn", "install", "--pure-lockfile"]
|
||||
|
||||
# Dev environment doesn't run this stage or beyond
|
||||
FROM base as build
|
||||
|
||||
# Copy source files
|
||||
COPY packages/backend ./packages/backend/
|
||||
COPY packages/utils ./packages/utils/
|
||||
COPY packages/discord-bot ./packages/discord-bot/
|
||||
COPY packages/@types ./packages/@types/
|
||||
|
||||
# Set env vars
|
||||
ARG GRAPHQL_HOST=hasura
|
||||
ARG GRAPHQL_DOMAIN=onrender.com
|
||||
ARG GRAPHQL_URL=https://$GRAPHQL_HOST.$GRAPHQL_DOMAIN/v1/graphql
|
||||
|
||||
ENV GRAPHQL_URL $GRAPHQL_URL
|
||||
ENV HASURA_GRAPHQL_ADMIN_SECRET metagame_secret
|
||||
ENV CERAMIC_URL https://ceramic.metagame.wtf
|
||||
ENV GRAPHQL_URL="$GRAPHQL_URL"
|
||||
ENV HASURA_GRAPHQL_ADMIN_SECRET=metagame_secret
|
||||
ENV CERAMIC_URL=https://ceramic.metagame.wtf
|
||||
|
||||
# Copy source files
|
||||
COPY packages/@types ./packages/@types/
|
||||
COPY packages/discord-bot ./packages/discord-bot/
|
||||
COPY packages/utils ./packages/utils/
|
||||
COPY packages/backend ./packages/backend/
|
||||
|
||||
# Build
|
||||
RUN yarn backend:build
|
||||
RUN ["yarn", "backend:build"]
|
||||
|
||||
# Delete devDependencies
|
||||
RUN yarn install --pure-lockfile --production --ignore-scripts --prefer-offline
|
||||
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/discord-bot/package.json \
|
||||
./packages/discord-bot/package.json
|
||||
COPY --from=build /usr/src/app/packages/discord-bot/dist \
|
||||
./packages/discord-bot/dist
|
||||
|
||||
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/package.json ./package.json
|
||||
COPY --from=build /usr/src/app/node_modules ./node_modules
|
||||
|
||||
COPY --from=build /usr/src/app/packages/backend/package.json ./packages/backend/package.json
|
||||
COPY --from=build /usr/src/app/packages/backend/dist ./packages/backend/dist
|
||||
COPY --from=build /usr/src/app/packages/backend/package.json \
|
||||
./packages/backend/package.json
|
||||
COPY --from=build /usr/src/app/packages/backend/dist \
|
||||
./packages/backend/dist
|
||||
|
||||
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/discord-bot/package.json ./packages/discord-bot/package.json
|
||||
COPY --from=build /usr/src/app/packages/discord-bot/dist ./packages/discord-bot/dist
|
||||
|
||||
CMD [ "yarn", "backend", "start" ]
|
||||
CMD ["yarn", "backend", "start"]
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
# 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 g++ make python
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
g++ make python \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install dependencies for dev and prod
|
||||
COPY package.json .
|
||||
COPY lerna.json .
|
||||
COPY yarn.lock .
|
||||
COPY schema.graphql .
|
||||
COPY tsconfig.base.json .
|
||||
COPY lerna.json .
|
||||
COPY schema.graphql .
|
||||
COPY package.json .
|
||||
COPY yarn.lock .
|
||||
COPY packages/discord-bot/*.json ./packages/discord-bot/
|
||||
COPY packages/utils/*.json ./packages/utils/
|
||||
|
||||
@@ -18,22 +24,24 @@ RUN yarn install --pure-lockfile
|
||||
# Dev environment doesn't run this stage or beyond
|
||||
FROM base as build
|
||||
|
||||
# Copy source files
|
||||
COPY packages/discord-bot ./packages/discord-bot/
|
||||
COPY packages/utils ./packages/utils/
|
||||
COPY packages/@types ./packages/@types/
|
||||
|
||||
# Set env vars
|
||||
ARG GRAPHQL_HOST
|
||||
|
||||
ENV GRAPHQL_URL https://$GRAPHQL_HOST.onrender.com/v1/graphql
|
||||
ENV HASURA_GRAPHQL_ADMIN_SECRET metagame_secret
|
||||
ENV GRAPHQL_URL=https://$GRAPHQL_HOST.onrender.com/v1/graphql
|
||||
ENV HASURA_GRAPHQL_ADMIN_SECRET=metagame_secret
|
||||
|
||||
# Copy source files
|
||||
COPY packages/@types ./packages/@types/
|
||||
COPY packages/discord-bot ./packages/discord-bot/
|
||||
COPY packages/utils ./packages/utils/
|
||||
|
||||
# Build
|
||||
RUN yarn discord-bot build
|
||||
RUN ["yarn", "discord-bot", "build"]
|
||||
|
||||
# Delete devDependencies
|
||||
RUN yarn install --pure-lockfile --production --ignore-scripts --prefer-offline
|
||||
RUN ["yarn", "install", "--pure-lockfile", \
|
||||
"--production", "--ignore-scripts", \
|
||||
"--prefer-offline"]
|
||||
|
||||
# Create completely new stage including only necessary files
|
||||
FROM node:16-alpine as app
|
||||
@@ -43,9 +51,6 @@ WORKDIR /app
|
||||
ENV RUNTIME_ENV docker
|
||||
|
||||
# Copy necessary files into the stage
|
||||
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/discord-bot/package.json ./packages/discord-bot/package.json
|
||||
COPY --from=build /usr/src/app/packages/discord-bot/dist ./packages/discord-bot/dist
|
||||
|
||||
@@ -53,4 +58,7 @@ COPY --from=build /usr/src/app/packages/utils/package.json ./packages/utils/pack
|
||||
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
|
||||
|
||||
CMD [ "yarn", "discord-bot", "start" ]
|
||||
COPY --from=build /usr/src/app/package.json ./package.json
|
||||
COPY --from=build /usr/src/app/node_modules ./node_modules
|
||||
|
||||
CMD ["yarn", "discord-bot", "start"]
|
||||
|
||||
@@ -1,64 +1,80 @@
|
||||
# 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 g++ make python git ca-certificates
|
||||
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 package.json .
|
||||
COPY lerna.json .
|
||||
COPY yarn.lock .
|
||||
COPY schema.graphql .
|
||||
COPY tsconfig.base.json .
|
||||
COPY tsconfig.json .
|
||||
COPY packages/web/*.json ./packages/web/
|
||||
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
|
||||
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
|
||||
|
||||
# Copy source files
|
||||
COPY packages/web ./packages/web/
|
||||
COPY packages/utils ./packages/utils/
|
||||
COPY packages/design-system ./packages/design-system/
|
||||
COPY packages/@types ./packages/@types/
|
||||
|
||||
# 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
|
||||
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
|
||||
RUN ["yarn", "web:build"]
|
||||
|
||||
# Delete devDependencies
|
||||
RUN yarn install --pure-lockfile --production --ignore-scripts --prefer-offline
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
CMD [ "yarn", "web", "start" ]
|
||||
CMD ["yarn", "web", "start"]
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# syntax = docker/dockerfile:1 # use BuildKit
|
||||
|
||||
FROM hasura/graphql-engine:v1.3.3.cli-migrations-v2
|
||||
|
||||
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.9.0/wait /wait
|
||||
RUN chmod +x /wait
|
||||
|
||||
## Default setup
|
||||
## Default Setup
|
||||
|
||||
ARG BACKEND_HOST=localhost
|
||||
ARG BACKEND_PROTOCOL=http
|
||||
@@ -15,21 +17,28 @@ ARG HASURA_GRAPHQL_SERVER_PORT=8080
|
||||
|
||||
ENV HASURA_GRAPHQL_DEV_MODE false
|
||||
ENV HASURA_GRAPHQL_ENABLE_TELEMETRY false
|
||||
ENV HASURA_GRAPHQL_ENABLED_LOG_TYPES startup, http-log, webhook-log, websocket-log, query-log
|
||||
ENV HASURA_GRAPHQL_AUTH_HOOK $BACKEND_PROTOCOL://$BACKEND_HOST/$AUTH_HOOK_PATH
|
||||
ENV ACTION_BASE_ENDPOINT $BACKEND_PROTOCOL://$BACKEND_HOST/$ACTION_BASE_PATH
|
||||
ENV REMOTE_SCHEMA_ENDPOINT $BACKEND_PROTOCOL://$BACKEND_HOST/$REMOTE_SCHEMA_PATH
|
||||
ENV TRIGGERS_ENDPOINT $BACKEND_PROTOCOL://$BACKEND_HOST/$TRIGGERS_PATH
|
||||
ENV HASURA_GRAPHQL_MIGRATIONS_DATABASE_ENV_VAR HASURA_GRAPHQL_DATABASE_URL
|
||||
ENV HASURA_GRAPHQL_ENABLED_LOG_TYPES \
|
||||
startup, http-log, webhook-log, websocket-log, query-log
|
||||
ENV HASURA_GRAPHQL_AUTH_HOOK \
|
||||
$BACKEND_PROTOCOL://$BACKEND_HOST/$AUTH_HOOK_PATH
|
||||
ENV ACTION_BASE_ENDPOINT \
|
||||
$BACKEND_PROTOCOL://$BACKEND_HOST/$ACTION_BASE_PATH
|
||||
ENV REMOTE_SCHEMA_ENDPOINT \
|
||||
$BACKEND_PROTOCOL://$BACKEND_HOST/$REMOTE_SCHEMA_PATH
|
||||
ENV TRIGGERS_ENDPOINT \
|
||||
$BACKEND_PROTOCOL://$BACKEND_HOST/$TRIGGERS_PATH
|
||||
ENV HASURA_GRAPHQL_MIGRATIONS_DATABASE_ENV_VAR \
|
||||
HASURA_GRAPHQL_DATABASE_URL
|
||||
ENV HASURA_GRAPHQL_NO_OF_RETRIES 3
|
||||
ENV HASURA_GRAPHQL_MIGRATIONS_SERVER_TIMEOUT 90
|
||||
## Migrations
|
||||
|
||||
## Migrations & Metadata
|
||||
COPY migrations /hasura-migrations
|
||||
COPY metadata /hasura-metadata
|
||||
|
||||
## Execution
|
||||
|
||||
ENTRYPOINT ["/bin/sh", "-c", "/wait && /bin/docker-entrypoint.sh /bin/sh \"$@\""]
|
||||
ENTRYPOINT ["/bin/sh", "-c", \
|
||||
"/wait && /bin/docker-entrypoint.sh /bin/sh \"$@\""]
|
||||
|
||||
CMD graphql-engine serve --server-port $HASURA_GRAPHQL_SERVER_PORT
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
"docker:build": "docker-compose up --build -d",
|
||||
"docker:stop": "docker-compose down",
|
||||
"docker:clean": "docker-compose down -v",
|
||||
"docker:debug": "COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose up --build",
|
||||
"build": "lerna run build",
|
||||
"web:dev": "lerna run dev --parallel --scope @metafam/web --include-dependencies",
|
||||
"web:build": "lerna run build --scope @metafam/web --include-dependencies --stream",
|
||||
@@ -21,10 +22,11 @@
|
||||
"hasura:console": "yarn hasura console --no-browser",
|
||||
"hasura:migrate:init": "yarn hasura migrate create \"init\" --from-server",
|
||||
"hasura:seed-db": "node hasura/seed-db.mjs",
|
||||
"test": "lerna run test --parallel --",
|
||||
"generate": "lerna run generate --parallel --",
|
||||
"test": "lerna run test --parallel --",
|
||||
"test:full": "yarn lint && yarn typecheck && yarn test",
|
||||
"clean": "lerna clean",
|
||||
"clean:full": "lerna clean && rm -rfv node_modules/ packages/*/node_modules/ packages/*/dist/ packages/web/.next/",
|
||||
"format": "prettier --write \"{*,**/*}.{ts,tsx,js,jsx,json,yml,yaml,md}\"",
|
||||
"lint": "eslint --ignore-path .gitignore \"./packages/**/*.{ts,tsx,js,jsx}\"",
|
||||
"typecheck": "lerna run typecheck",
|
||||
|
||||
Reference in New Issue
Block a user