mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-04 03:36:29 +08:00
38 lines
1018 B
Docker
38 lines
1018 B
Docker
# --- Build Stage ---
|
|
FROM node:18-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package.json and yarn.lock first to leverage Docker cache
|
|
COPY package.json yarn.lock ./
|
|
RUN yarn install --frozen-lockfile
|
|
|
|
# Copy the rest of the source code
|
|
COPY . .
|
|
|
|
# Compile TypeScript to JavaScript
|
|
RUN yarn build
|
|
|
|
# Prune development dependencies
|
|
RUN yarn install --production --ignore-scripts --prefer-offline
|
|
|
|
|
|
# --- Production Stage ---
|
|
FROM node:18-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy production dependencies and compiled code from the builder stage
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
# Copy config.json from the project root relative to the Docker build context
|
|
# IMPORTANT: When building, run `docker build -f backend/Dockerfile .` from the project root.
|
|
COPY src/config/config.json dist/config/
|
|
|
|
# Expose the port the app runs on
|
|
EXPOSE 3001
|
|
|
|
# The command to run the application
|
|
# You can override the port using -e PORT=... in `docker run`
|
|
CMD [ "node", "dist/index.docker.js" ] |