added docker configuration
This commit is contained in:
parent
f2503049e2
commit
6b4e5cd944
|
|
@ -0,0 +1,20 @@
|
|||
# docker build files
|
||||
Dockerfile
|
||||
docker-compose*.yml
|
||||
.dockerignore
|
||||
|
||||
# git files
|
||||
.git
|
||||
.gitignore
|
||||
.gitattributes
|
||||
|
||||
# miscellaneus tooling
|
||||
README.md
|
||||
.npmrc
|
||||
.prettierrc
|
||||
.eslintrc.cjs
|
||||
.svelte-kit
|
||||
node_modules
|
||||
build
|
||||
**/.env
|
||||
**/.env.*
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
FROM node:24-slim AS base
|
||||
|
||||
WORKDIR /usr/src/webserver
|
||||
|
||||
# needed for prisma
|
||||
RUN apt-get update -y && apt-get install openssl -y
|
||||
|
||||
|
||||
FROM base AS install
|
||||
|
||||
# Install packages: dev and then build
|
||||
RUN mkdir -p /temp/dev
|
||||
COPY package.json package-lock.json /temp/dev/
|
||||
RUN cd /temp/dev && npm ci
|
||||
|
||||
RUN mkdir -p /temp/prod
|
||||
COPY package.json package-lock.json /temp/prod/
|
||||
RUN cd /temp/prod && npm ci --omit=dev
|
||||
|
||||
|
||||
FROM base AS prebuild
|
||||
|
||||
# copy installed dev packages
|
||||
COPY --from=install /temp/dev/node_modules node_modules
|
||||
|
||||
# Copy source files
|
||||
COPY . .
|
||||
|
||||
# Initialize prisma
|
||||
RUN npx prisma generate
|
||||
|
||||
|
||||
FROM prebuild AS build
|
||||
|
||||
# Build project
|
||||
RUN npm run build
|
||||
|
||||
|
||||
FROM base AS release
|
||||
|
||||
# Copy release files
|
||||
COPY --from=install /temp/prod/node_modules node_modules
|
||||
COPY --from=build /usr/src/webserver/build .
|
||||
|
||||
EXPOSE 3000/tcp
|
||||
|
||||
CMD ["node", "."]
|
||||
|
||||
|
||||
FROM prebuild AS dev
|
||||
|
||||
RUN npx svelte-kit sync
|
||||
|
||||
EXPOSE 5173/tcp
|
||||
|
||||
CMD ["npm", "run", "dev", "--", "--host"]
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
|
||||
|
||||
services:
|
||||
db:
|
||||
image: postgres:17-alpine
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=TTGF-Homepage
|
||||
- POSTGRES_USER=TTGFHPDB
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
ports:
|
||||
- "5432:5432"
|
||||
networks:
|
||||
- net-TTGFHP
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U TTGFHPDB -d TTGF-Homepage"]
|
||||
interval: 5s
|
||||
timeout: 2s
|
||||
retries: 20
|
||||
volumes:
|
||||
- TTGF_DB_data:/var/lib/postgresql/data
|
||||
command: postgres -c listen_addresses='*'
|
||||
logging:
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
base_server:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: base
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- net-TTGFHP
|
||||
|
||||
webserver:
|
||||
extends:
|
||||
service: base_server
|
||||
build:
|
||||
target: release
|
||||
ports:
|
||||
- "3000:3000"
|
||||
env_file:
|
||||
- .env.prod
|
||||
profiles: ["release"]
|
||||
|
||||
dev_server:
|
||||
extends:
|
||||
service: base_server
|
||||
build:
|
||||
target: dev
|
||||
ports:
|
||||
- "5173:5173"
|
||||
develop:
|
||||
watch:
|
||||
- action: sync
|
||||
path: .
|
||||
target: /usr/src/webserver
|
||||
ignore:
|
||||
- node_modules
|
||||
- action: rebuild
|
||||
path: package.json
|
||||
profiles: ["dev"]
|
||||
|
||||
|
||||
|
||||
networks:
|
||||
net-TTGFHP:
|
||||
|
||||
volumes:
|
||||
TTGF_DB_data:
|
||||
Loading…
Reference in New Issue