From 69fcf81e408e51a31bd07aea230ed3c382440372 Mon Sep 17 00:00:00 2001 From: Jan Houben Date: Sat, 23 Nov 2024 15:14:55 -0500 Subject: [PATCH] chore: docker support --- .dockerignore | 6 ++++++ .env.example | 6 ++++-- Dockerfile | 31 +++++++++++++++++++++++++++++++ docker-compose.yml | 7 +++++++ package.json | 2 +- 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..adaed10 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +.git +.gitignore +*.md +dist +Dockerfile \ No newline at end of file diff --git a/.env.example b/.env.example index a85c504..02df754 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,6 @@ -# Extract these from the game exectuable +# log output will be in color even inside docker, if set to 1 +FORCE_COLOR=1 +# Extract these next 2 secrets from the game exectuable MASTER_SECRET= -# 9 strings comma seperated +# 9 strings comma seperated, i.e. GAME_SECRETS=abc,def,ghi,jkl,mno,pqr,stu,wxy,zab GAME_SECRETS= \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ebd24eb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM node:22-alpine AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +USER node +WORKDIR /app + +# Dependencies +FROM base AS prod-deps +COPY package.json pnpm-lock.yaml ./ +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile + +# Building +FROM base AS build +COPY . . +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +# Run +FROM base as runner +ENV NODE_ENV production + +COPY --chown=node:node --from=build /app/dist /app/dist +COPY --chown=node:node --from=prod-deps /app/package.json /app/package.json +COPY --chown=node:node --from=prod-deps /app/node_modules /app/node_modules + +RUN corepack pack + +CMD ["pnpm", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fe04cb5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + server: + build: . + env_file: ".env" + ports: + - "80:80" + - "8085:8085/udp" \ No newline at end of file diff --git a/package.json b/package.json index d9373d6..38c9dc5 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "scripts": { "dev": "tsx watch src/index.ts", - "start": "node dist/index.js", + "start": "node dist/src/index.js", "build": "tsc", "type-check": "tsc --noEmit", "lint": "eslint .",