Loading .dockerignore 0 → 100644 +13 −0 Original line number Diff line number Diff line **/node_modules build data **/dist packages/build Dockerfile secrets # dotfiles .git* .vscode **/.env* No newline at end of file .gitignore 0 → 100644 +28 −0 Original line number Diff line number Diff line # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules # testing /coverage # production /build # misc .DS_Store *.pem # debug npm-debug.log* # local env files .env*.local # typescript *.tsbuildinfo next-env.d.ts /data /secrets No newline at end of file Dockerfile 0 → 100644 +82 −0 Original line number Diff line number Diff line FROM node:20-alpine AS base FROM base as dev_dep RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app # --- dependencies --- COPY --chown=node:node package*.json ./ COPY --chown=node:node backend/package*.json ./backend/ COPY --chown=node:node frontend/package*.json ./frontend/ USER node RUN npm install --include=dev FROM base as dep RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app # --- dependencies --- COPY --chown=node:node package*.json ./ COPY --chown=node:node backend/package*.json ./backend/ COPY --chown=node:node frontend/package*.json ./frontend/ USER node RUN npm install --omit=dev # # === BUILDER === # FROM base as build RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app COPY --from=dev_dep /home/node/app/ ./ COPY --chown=node:node . . # --- build frontend --- RUN npm -w frontend run build # --- build backend --- RUN npx -w backend prisma generate RUN npm -w backend run build # # === RUNNER === # FROM base as run WORKDIR /home/node/app COPY --from=dep /home/node/app/ ./ COPY package*.json docker-start.sh ./ # --- prepare frontend --- RUN mkdir -p frontend COPY --from=build /home/node/app/frontend/dist ./frontend/ # --- prepare server --- RUN mkdir -p backend COPY --from=build /home/node/app/backend/package.json ./backend/ COPY --from=build /home/node/app/backend/prisma ./backend/prisma COPY --from=build /home/node/app/backend/dist ./backend/dist # --- finalize --- RUN npx -w backend prisma generate # set runtime env variables ENV PORT 3000 ENV NODE_ENV production ENV SERVE_FRONTEND /home/node/app/frontend EXPOSE 3000 ENTRYPOINT [ "/bin/sh" ] CMD [ "./docker-start.sh" ] No newline at end of file README.md 0 → 100644 +5 −0 Original line number Diff line number Diff line # fediverse-auth Providing a central OpenID Connect service for Fediverse identification Leverages OpenID Connect Auto Discovery & Dynamic Client Registration backend/.gitignore 0 → 100644 +5 −0 Original line number Diff line number Diff line node_modules # Keep environment variables out of version control .env dist No newline at end of file Loading
.dockerignore 0 → 100644 +13 −0 Original line number Diff line number Diff line **/node_modules build data **/dist packages/build Dockerfile secrets # dotfiles .git* .vscode **/.env* No newline at end of file
.gitignore 0 → 100644 +28 −0 Original line number Diff line number Diff line # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules # testing /coverage # production /build # misc .DS_Store *.pem # debug npm-debug.log* # local env files .env*.local # typescript *.tsbuildinfo next-env.d.ts /data /secrets No newline at end of file
Dockerfile 0 → 100644 +82 −0 Original line number Diff line number Diff line FROM node:20-alpine AS base FROM base as dev_dep RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app # --- dependencies --- COPY --chown=node:node package*.json ./ COPY --chown=node:node backend/package*.json ./backend/ COPY --chown=node:node frontend/package*.json ./frontend/ USER node RUN npm install --include=dev FROM base as dep RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app # --- dependencies --- COPY --chown=node:node package*.json ./ COPY --chown=node:node backend/package*.json ./backend/ COPY --chown=node:node frontend/package*.json ./frontend/ USER node RUN npm install --omit=dev # # === BUILDER === # FROM base as build RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app WORKDIR /home/node/app COPY --from=dev_dep /home/node/app/ ./ COPY --chown=node:node . . # --- build frontend --- RUN npm -w frontend run build # --- build backend --- RUN npx -w backend prisma generate RUN npm -w backend run build # # === RUNNER === # FROM base as run WORKDIR /home/node/app COPY --from=dep /home/node/app/ ./ COPY package*.json docker-start.sh ./ # --- prepare frontend --- RUN mkdir -p frontend COPY --from=build /home/node/app/frontend/dist ./frontend/ # --- prepare server --- RUN mkdir -p backend COPY --from=build /home/node/app/backend/package.json ./backend/ COPY --from=build /home/node/app/backend/prisma ./backend/prisma COPY --from=build /home/node/app/backend/dist ./backend/dist # --- finalize --- RUN npx -w backend prisma generate # set runtime env variables ENV PORT 3000 ENV NODE_ENV production ENV SERVE_FRONTEND /home/node/app/frontend EXPOSE 3000 ENTRYPOINT [ "/bin/sh" ] CMD [ "./docker-start.sh" ] No newline at end of file
README.md 0 → 100644 +5 −0 Original line number Diff line number Diff line # fediverse-auth Providing a central OpenID Connect service for Fediverse identification Leverages OpenID Connect Auto Discovery & Dynamic Client Registration
backend/.gitignore 0 → 100644 +5 −0 Original line number Diff line number Diff line node_modules # Keep environment variables out of version control .env dist No newline at end of file