initiation librodrome
This commit is contained in:
40
docker/Dockerfile
Normal file
40
docker/Dockerfile
Normal 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" ]
|
||||
22
docker/docker-compose.dev.yml
Normal file
22
docker/docker-compose.dev.yml
Normal 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
24
docker/docker-compose.yml
Normal 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"
|
||||
Reference in New Issue
Block a user