initiation librodrome

This commit is contained in:
Yvv
2026-02-20 12:55:10 +01:00
commit 35e2897a73
208 changed files with 18951 additions and 0 deletions

40
docker/Dockerfile Normal file
View File

@@ -0,0 +1,40 @@
# syntax = docker/dockerfile:1
ARG NODE_VERSION=23.11.0-slim
FROM node:${NODE_VERSION} AS base
ARG PORT=3000
WORKDIR /src
# Build
FROM base AS build
COPY package.json pnpm-lock.yaml ./
RUN npm install
RUN npm rebuild sharp
COPY . .
RUN npm run build
# Production
FROM base AS production
ENV PORT=${PORT}
ENV NODE_ENV=production
COPY --from=build /src/.output /src/.output
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD curl -f http://localhost:${PORT}/api/health || exit 1
EXPOSE $PORT
CMD [ "node", ".output/server/index.mjs" ]
# Development
FROM base AS development
WORKDIR /app
ENTRYPOINT [ "npm", "run", "dev" ]

View File

@@ -0,0 +1,22 @@
services:
app:
build:
context: ../
dockerfile: docker/Dockerfile
target: development
environment:
NODE_ENV: ${NODE_ENV:-development}
ports: !override
- "3000:3000"
- "4000:4000"
- "24678:24678"
volumes:
- sources:/app
volumes:
sources:
driver: local
driver_opts:
type: none
o: bind
device: ../

24
docker/docker-compose.yml Normal file
View File

@@ -0,0 +1,24 @@
name: librodrome
services:
app:
build:
context: ../
dockerfile: docker/Dockerfile
target: production
environment:
NODE_ENV: ${NODE_ENV:-production}
NUXT_PUBLIC_SITE_URL: ${NUXT_PUBLIC_SITE_URL:-https://librodrome.org}
NUXT_ADMIN_PASSWORD: ${NUXT_ADMIN_PASSWORD}
NUXT_ADMIN_SECRET: ${NUXT_ADMIN_SECRET}
ports:
- 3000
volumes:
- ./data:/src/data
- ./public:/src/public
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.librodrome.rule=Host(`librodrome.org`)"
- "traefik.http.routers.librodrome.entrypoints=websecure"
- "traefik.http.routers.librodrome.tls.certresolver=letsencrypt"
- "traefik.http.services.librodrome.loadbalancer.server.port=3000"