From ef107418412b68afede45bb0edb61b1f39e26061 Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Thu, 9 Feb 2023 00:01:15 +0000 Subject: [PATCH] fix: new dockerfile.server --- Dockerfile.server | 27 +++++++++++++++++++++------ docker-compose-dev.yml | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/Dockerfile.server b/Dockerfile.server index e4bfbed5c..1af63fc10 100644 --- a/Dockerfile.server +++ b/Dockerfile.server @@ -2,6 +2,7 @@ # It does not spin up mongodb instances or redis instances, which the server # does need to boot. You should consider using docker-compose for this. +# base image FROM node:16-alpine as base ARG COMMIT_HASH ENV COMMIT_HASH=${COMMIT_HASH} @@ -9,7 +10,8 @@ ENV COMMIT_HASH=${COMMIT_HASH} RUN npm install --silent -g pnpm RUN apk add --no-cache git curl -FROM base AS build +# install dependencies +FROM base AS install WORKDIR /app COPY pnpm-lock.yaml . @@ -20,12 +22,10 @@ RUN pnpm fetch COPY server ./server COPY common ./common COPY *.json *.yaml ./ - RUN pnpm --filter tachi-server... --filter . install --offline --frozen-lockfile -RUN pnpm --filter tachi-server... -r build -FROM base AS app -COPY --from=build /app /app +# development image, keeps installed dependencies +FROM install AS dev RUN git config --global --add safe.directory /app @@ -33,4 +33,19 @@ HEALTHCHECK --interval=15s --timeout=5s CMD curl -f http://localhost:8080/api/v1 WORKDIR /app/server ENV NODE_PATH=js/ -CMD ["node", "js/main.js"] +CMD ["pnpm", "dev"] + +# build source and dependencies +FROM install AS build + +RUN pnpm --filter tachi-server... -r build + +# built source only for production +FROM base AS prod +COPY --from=build /app /app + +HEALTHCHECK --interval=15s --timeout=5s CMD curl -f http://localhost:8080/api/v1/status || exit 1 +WORKDIR /app/server + +ENV NODE_PATH=js/ +CMD ["node", "js/main.js"] \ No newline at end of file diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 7dbe60c44..457eaa4a2 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -21,6 +21,7 @@ services: container_name: tachi-server build: dockerfile: Dockerfile.server + target: dev depends_on: - redis - mongo @@ -36,7 +37,6 @@ services: MONGO_URL: mongo PORT: 8080 NODE_ENV: "dev" - command: pnpm dev tachi-client: container_name: tachi-client build: