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