diff --git a/packages/server/.dockerignore b/.dockerignore similarity index 100% rename from packages/server/.dockerignore rename to .dockerignore diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bf7671e..1ae7fca 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,9 +26,6 @@ jobs: packages: write steps: - - name: Go to server - run: cd ./packages/server - - name: Checkout repository uses: actions/checkout@v3 # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2c350fe --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM node:20-alpine as base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app +WORKDIR /app + +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile + +FROM base AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +FROM node:20-alpine as run + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +WORKDIR /app + +COPY --from=prod-deps /app/node_modules /app/node_modules + +COPY --from=prod-deps /app/packages/server/node_modules /app/packages/server/node_modules +COPY --from=prod-deps /app/packages/plugins/node_modules /app/packages/plugins/node_modules +COPY --from=prod-deps /app/packages/sdk/node_modules /app/packages/sdk/node_modules + +COPY --from=build /app/packages/sdk/dist/ /app/packages/sdk/dist +COPY --from=build /app/packages/plugins/dist/ /app/packages/plugins/dist +COPY --from=build /app/packages/server/dist/ /app/packages/server/dist + +COPY --from=build /app/packages/sdk/package.json /app/packages/sdk +COPY --from=build /app/packages/plugins/package.json /app/packages/plugins +COPY --from=build /app/packages/server/package.json /app/packages/server + +EXPOSE 8080 +WORKDIR /app/packages/server +CMD [ "pnpm", "start" ] \ No newline at end of file diff --git a/packages/server/docker-compose.yml b/docker-compose.yml similarity index 100% rename from packages/server/docker-compose.yml rename to docker-compose.yml diff --git a/packages/server/Dockerfile b/packages/server/Dockerfile deleted file mode 100644 index 9bd5954..0000000 --- a/packages/server/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:18-alpine as build -WORKDIR /app -COPY . . -RUN npm install -RUN npm run build - -FROM node:18-alpine as run -WORKDIR /app -COPY --from=build /app/dist/ /app/package*.json ./ -RUN npm install --omit=dev -CMD npm run start:docker -EXPOSE 8080 diff --git a/packages/server/package.json b/packages/server/package.json index de8bd92..dd9205d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -14,7 +14,6 @@ "test": "echo \"Error: no test specified\" && exit 1", "build": "npm run clean-css && copyfiles ./templates/*.ejs ./templates/**/*.ejs .env ./dist/ && tsc", "start": "cd ./dist && node ./src/app.js", - "start:docker": "node ./src/app.js", "clean-css": "cleancss --batch static/*.css -o dist/static --batch-suffix \"\"", "dev": "tsc-watch --onSuccess \"node ./dist/src/app.js\"" },