34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
|
I'll improve the docker build eventually, so I'll keep the planned improvs here. But for now it might be better to use the bigger multistage docker file.
|
||
|
|
||
|
# Use the official Bun image
|
||
|
FROM oven/bun:1 AS base
|
||
|
WORKDIR /usr/src/app
|
||
|
|
||
|
# Install dependencies for both backend and frontend
|
||
|
COPY backend/package.json backend/bun.lockb frontend/package.json frontend/bun.lockb /usr/src/app/
|
||
|
RUN bun install --production --cwd backend && \
|
||
|
bun install --production --cwd frontend
|
||
|
|
||
|
# Build the frontend project
|
||
|
COPY frontend/ /usr/src/app/frontend
|
||
|
RUN bun run --cwd frontend build
|
||
|
|
||
|
# Prepare for final release
|
||
|
FROM oven/bun:1 AS release
|
||
|
WORKDIR /usr/src/app
|
||
|
|
||
|
# Copy production dependencies
|
||
|
COPY --from=base /usr/src/app/backend/node_modules backend/node_modules
|
||
|
COPY --from=base /usr/src/app/frontend/node_modules frontend/node_modules
|
||
|
|
||
|
# Copy backend source code
|
||
|
COPY backend/ backend/
|
||
|
|
||
|
# Copy the built frontend assets into the backend public directory
|
||
|
COPY --from=base /usr/src/app/frontend/dist backend/public
|
||
|
|
||
|
# Set the entrypoint to run the backend server
|
||
|
USER bun
|
||
|
EXPOSE 3000/tcp
|
||
|
ENTRYPOINT [ "bun", "run", "backend/src/server.ts" ]
|