fix: Simplify Dockerfile to single-stage with tsx runtime
All checks were successful
Trigger Cloudarix Deploy / call-webhook (push) Successful in 1s
All checks were successful
Trigger Cloudarix Deploy / call-webhook (push) Successful in 1s
This commit is contained in:
parent
6afee7d03b
commit
1cf1b00a9a
@ -1,33 +1,19 @@
|
||||
### Multi-stage build: compile TypeScript in a builder image, produce a smaller runtime image
|
||||
### Single-stage build: Run worker with tsx TypeScript runtime
|
||||
### IMPORTANT: Dokploy must set dockerContextPath="." (repo root) in database
|
||||
### This allows the build to access package.json and other files from repo root
|
||||
### Dockerfile path should be "worker/Dockerfile"
|
||||
|
||||
FROM node:20 AS builder
|
||||
FROM node:20-alpine AS runtime
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy package manifests and install all deps (including dev) for build
|
||||
# Install production dependencies AND tsx for TypeScript runtime
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --silent
|
||||
RUN npm ci --production --silent && npm install tsx dotenv --silent
|
||||
|
||||
# Copy entire project and compile TypeScript
|
||||
COPY . .
|
||||
# Try to compile the project; if there is no TS config for worker, keep files as-is
|
||||
RUN npx tsc -p tsconfig.json --outDir dist || echo "tsc exit code ignored"
|
||||
|
||||
FROM node:20-alpine AS runner
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Install only production dependencies
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --production --silent
|
||||
|
||||
# Copy compiled output from builder (if present) and essential runtime files
|
||||
COPY --from=builder /usr/src/app/dist ./dist
|
||||
COPY --from=builder /usr/src/app/worker ./worker
|
||||
COPY --from=builder /usr/src/app/lib ./lib
|
||||
# Copy worker code and shared lib
|
||||
COPY worker ./worker
|
||||
COPY lib ./lib
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
# If compiled JS exists, run compiled entrypoint; otherwise fallback to tsx runtime
|
||||
CMD ["sh", "-c", "if [ -f ./dist/worker/index.js ]; then node ./dist/worker/index.js; else npx tsx ./worker/index.ts; fi"]
|
||||
# Run worker using tsx (TypeScript runtime)
|
||||
CMD ["npx", "tsx", "./worker/index.ts"]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user