Added Dockerfile and compose stack

This builds a thin docker container with the default .env copied into the container
This commit is contained in:
Noah Halstead 2025-03-12 14:46:30 -04:00
parent 4af69988c2
commit 1c6b4be721
3 changed files with 79 additions and 0 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
.github/
.idea/
node_modules/
dist/
.DS_Store
.env

29
Dockerfile Normal file
View File

@ -0,0 +1,29 @@
FROM node:21.1.0-alpine AS packages
WORKDIR /usr/src/app
COPY LICENSE /usr/src/app/
COPY package.json /usr/src/app/
COPY package-lock.json /usr/src/app/
RUN npm install
FROM packages AS builder
WORKDIR /usr/src/app
COPY . /usr/src/app/
RUN npx prisma generate
RUN npm run build
FROM packages AS app
LABEL org.opencontainers.image.source="https://github.com/jetkvm/cloud-api"
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/prisma /usr/src/app/prisma
COPY --from=builder /usr/src/app/node_modules/.prisma /usr/src/app/node_modules/.prisma
COPY --from=builder /usr/src/app/dist /usr/src/app/dist
COPY .env.example ./.env
ENV NODE_ENV=production
ENV PORT=3000
EXPOSE 3000
CMD ["node", "./dist/index.js"]

44
compose.yaml Normal file
View File

@ -0,0 +1,44 @@
name: jetkvm-cloud-api
networks:
jetkvm:
driver: bridge
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: jetkvm
POSTGRES_USER: jetkvm
POSTGRES_DB: jetkvm
#ports:
# - "5432:5432"
networks:
- jetkvm
volumes:
- postgresql:/var/lib/postgresql/data
app: &app
build: .
environment:
PORT: 5172
DATABASE_URL: postgres://jetkvm:jetkvm@db:5432/jetkvm
depends_on:
- db
ports:
- "5172:5172"
networks:
- jetkvm
# Trigger prisma migration
# This can be done in the app container as well, but is generally discouraged.
app-migrate:
<<: *app
command: npm run prisma-migrate
ports: []
restart: no
volumes:
postgresql:
driver: local