Commit cd62fc4f authored by Grant's avatar Grant
Browse files

move everything to a dockerfile instead of complicated system lol

parent ea4b462a
Loading
Loading
Loading
Loading

.dockerignore

0 → 100644
+11 −0
Original line number Diff line number Diff line
**/node_modules
build
data
**/dist
packages/build
Dockerfile

# dotfiles
.git*
.vscode
**/.env*
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -18,5 +18,7 @@ node_modules/
*.tsbuildinfo
.eslintcache

# only ignore .env in root because Vite requires some things (check packages/admin)
/.env
.env.local
dist
 No newline at end of file

Dockerfile

0 → 100644
+80 −0
Original line number Diff line number Diff line
FROM node:20-alpine AS base

#
# === 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 --chown=node:node . .

USER node
RUN npm install --include=dev

# --- build lib ---

RUN npm -w packages/lib run build
# janky? fix to keep imports in dev
RUN sed -i -e 's/"main": ".*"/"main": ".\/dist\/index.js"/' packages/lib/package.json

# --- build main client ---

RUN npm -w packages/client run build

# --- build admin ---

RUN npm -w packages/admin run build

# --- build server ---

RUN npx -w packages/server prisma generate
RUN npm -w packages/server run build

#
# === RUNNER ===
#

FROM base as run
WORKDIR /home/node/app
COPY package*.json docker-start.sh ./

# --- prepare lib ---

RUN mkdir -p packages/lib
COPY --from=build /home/node/app/packages/lib/package.json ./packages/lib
COPY --from=build /home/node/app/packages/lib/dist ./packages/lib/dist

# --- prepare client ---

RUN mkdir -p packages/client
COPY --from=build /home/node/app/packages/client/dist ./packages/client/

# --- prepare admin ---

RUN mkdir -p packages/admin
COPY --from=build /home/node/app/packages/admin/dist ./packages/admin/

# --- prepare server ---

RUN mkdir -p packages/server
COPY --from=build /home/node/app/packages/server/package.json ./packages/server/
COPY --from=build /home/node/app/packages/server/prisma ./packages/server/prisma
COPY --from=build /home/node/app/packages/server/tool.sh ./packages/server/
COPY --from=build /home/node/app/packages/server/dist ./packages/server/dist

# --- finalize ---

RUN npm install --omit=dev
RUN npx -w packages/server prisma generate

# set runtime env variables

ENV PORT 3000
ENV NODE_ENV production
ENV SERVE_CLIENT /home/node/app/packages/client
ENV SERVE_ADMIN /home/node/app/packages/admin

EXPOSE 3000
ENTRYPOINT [ "/bin/sh" ]
CMD [ "./docker-start.sh" ]
 No newline at end of file
+3 −5
Original line number Diff line number Diff line
@@ -2,9 +2,7 @@

## Running via Docker Compose

1. Run `npm run build:all`
2. Run `npm run build:docker`
3. Run `docker compose run --rm canvas npx prisma migrate deploy`
4. (optional) Load default palette colors
1. Run `docker compose build`
2. (optional) Load default palette colors
   Run `docker compose run --rm canvas npm run -w packages/server prisma:seed:palette`
5. Run `docker compose up -d`
3. Run `docker compose up -d`
+4 −0
Original line number Diff line number Diff line
@@ -6,12 +6,16 @@ name: canvas
services:
  canvas:
    image: sc07/canvas
    build: .
    ports:
      - "3000:3000"
    environment:
      - SESSION_SECRET=CHANGE ME TO RANDOM VALUE
      - REDIS_HOST=redis://redis
      - DATABASE_URL=postgres://postgres@postgres/canvas
      - AUTH_ENDPOINT=https://auth.fediverse.events
      - AUTH_CLIENT=canvas
      - AUTH_SECRET=${AUTH_SECRET}
    depends_on:
      - redis
      - postgres
Loading