53 lines
1.1 KiB
Docker
53 lines
1.1 KiB
Docker
# ---- Base dependencies ----
|
|
FROM oven/bun:latest AS base
|
|
WORKDIR /app
|
|
RUN bun install -g serve typescript tsc tsc-alias tsx
|
|
|
|
COPY package.json bun.lock ./
|
|
COPY shared/package*.json ./shared/
|
|
COPY server/package*.json ./server/
|
|
COPY vite/package*.json ./vite/
|
|
|
|
RUN bun install
|
|
|
|
FROM base AS localtunnel
|
|
WORKDIR /app
|
|
COPY localtunnel-start.sh ./
|
|
CMD ["sh", "localtunnel-start.sh"]
|
|
|
|
# ---- Build shared package ----
|
|
FROM base AS shared-build
|
|
COPY shared/ ./shared/
|
|
WORKDIR /app/shared
|
|
RUN bun run build
|
|
|
|
# ---- Build frontend (vite) ----
|
|
FROM base AS vite-build
|
|
COPY --from=shared-build /app/shared/dist ./shared/dist
|
|
COPY . .
|
|
WORKDIR /app
|
|
RUN bun run build
|
|
|
|
# ---- Build backend (server) ----
|
|
FROM base AS server-build
|
|
COPY --from=shared-build /app/shared/dist ./shared/dist
|
|
COPY . .
|
|
WORKDIR /app
|
|
# RUN bun run server:build:bun
|
|
|
|
# ---- Production frontend image ----
|
|
FROM vite-build AS vite-prod
|
|
EXPOSE 3000
|
|
WORKDIR /app
|
|
CMD ["bun", "start"]
|
|
|
|
FROM server-build AS server-prod
|
|
EXPOSE 8080
|
|
WORKDIR /app/server
|
|
CMD ["bun", "start"]
|
|
|
|
FROM server-build AS workers-prod
|
|
EXPOSE 8080
|
|
WORKDIR /app/server
|
|
CMD ["bun", "workers"]
|