From deacf02a18ca3d3491126442105e58a8cba5d3a3 Mon Sep 17 00:00:00 2001 From: Nathan Lamy Date: Thu, 21 Aug 2025 18:01:20 +0200 Subject: [PATCH] chore: add docker build --- .dockerignore | 20 ++++++++++++++++++++ Dockerfile | 19 +++++++++---------- build.sh | 2 ++ docker-compose.yml | 43 ++++++++++++++++++++++++++++--------------- 4 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 .dockerignore create mode 100755 build.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e824d3e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,20 @@ +# Adonis default .gitignore ignores +node_modules +build +coverage +.vscode +.DS_STORE +.env +tmp + +# Additional .gitignore ignores (any custom file you wish) +.idea + +# Additional good to have ignores for dockerignore +Dockerfile* +docker-compose* +.dockerignore +*.md +.git +.gitignore +data/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index f0c6097..c4f1b62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,23 @@ -ARG NODE_IMAGE=node:22-slim +ARG NODE_IMAGE=node:22-alpine -###### First Stage - Creating base ###### -FROM $NODE_IMAGE as base -RUN mkdir -p /home/node/app && chown node:node /home/node/app -RUN npm install --global pnpm +FROM $NODE_IMAGE AS base +RUN apk --no-cache add dumb-init +RUN mkdir -p /home/node/app && chown node:node /home/node/app +RUN npm install -g pnpm WORKDIR /home/node/app USER node RUN mkdir tmp -###### Second Stage - Installing dependencies ###### FROM base AS dependencies -COPY --chown=node:node ./package*.json ./ +COPY --chown=node:node ./package.json ./ +COPY --chown=node:node ./pnpm-lock.yaml ./ RUN pnpm install COPY --chown=node:node . . -###### Third Stage - Building Stage ###### FROM dependencies AS build RUN node ace build -###### Final Stage - Production ###### -FROM base as production +FROM base AS production ENV NODE_ENV=production ENV PORT=3333 ENV HOST=0.0.0.0 @@ -28,3 +26,4 @@ COPY --chown=node:node ./pnpm-lock.yaml ./ RUN pnpm install --prod COPY --chown=node:node --from=build /home/node/app/build . EXPOSE 3333 +CMD [ "dumb-init", "node", "bin/server.js" ] diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..521dd51 --- /dev/null +++ b/build.sh @@ -0,0 +1,2 @@ +docker build -t git.lamy-charrier.fr/khollise/api:v1.0 . +# docker push git.lamy-charrier.fr/khollise/api:v1.0 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ec3e83b..879bc4d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: container_name: khollise-redis restart: unless-stopped ports: - - "127.0.0.1:6379:6379" + - '127.0.0.1:6379:6379' postgres: image: postgres:15 @@ -17,19 +17,32 @@ services: volumes: - ./data:/var/lib/postgresql/data ports: - - "127.0.0.1:5432:5432" + - '127.0.0.1:5432:5432' - pgadmin: - image: dpage/pgadmin4 - container_name: pgadmin4_container - restart: unless-stopped - ports: - - "8888:80" - environment: - PGADMIN_DEFAULT_EMAIL: nathan@lamy-charrier.fr - PGADMIN_DEFAULT_PASSWORD: securepass - volumes: - - pgadmin-data:/var/lib/pgadmin + api: + image: git.lamy-charrier.fr/khollise/api:v1.0 + container_name: khollise-api + restart: unless-stopped + depends_on: + - redis + - postgres + # Link env file + env_file: + - ./prod.env + ports: + - '3333:3333' -volumes: - pgadmin-data: \ No newline at end of file +# pgadmin: +# image: dpage/pgadmin4 +# container_name: pgadmin4_container +# restart: unless-stopped +# ports: +# - "8888:80" +# environment: +# PGADMIN_DEFAULT_EMAIL: nathan@lamy-charrier.fr +# PGADMIN_DEFAULT_PASSWORD: securepass +# volumes: +# - pgadmin-data:/var/lib/pgadmin + +# volumes: +# pgadmin-data: