diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..b408b65c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,21 @@ +# OS directory info files +.DS_Store +desktop.ini + +# node +node_modules + +# static build +build + +# secrets +.env +.env.* +!.env.example +cookies.json + +# docker +docker-compose.yml + +# ide +.vscode diff --git a/Dockerfile b/Dockerfile index 0896c116..e933c468 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,25 @@ -FROM node:18-bullseye-slim +FROM node:20-bullseye-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +FROM base AS build +WORKDIR /app +COPY . /app + +RUN corepack enable +RUN apt-get update && \ + apt-get install -y python3 build-essential + +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm install --prod --frozen-lockfile + +RUN pnpm deploy --filter=@imput/cobalt-api --prod /prod/api + +FROM base AS api WORKDIR /app -COPY package*.json ./ +COPY --from=build /prod/api /app +COPY --from=build /app/.git /app/.git -RUN apt-get update && \ - apt-get install -y git python3 build-essential && \ - npm ci && \ - npm cache clean --force && \ - apt purge --autoremove -y python3 build-essential && \ - rm -rf ~/.cache/ /var/lib/apt/lists/* - -COPY . . EXPOSE 9000 -CMD [ "node", "src/cobalt" ] +CMD [ "node", "src/cobalt" ] \ No newline at end of file