Files
task-manager/Dockerfile
T
paul-nothaft 56709ce8ca
continuous-integration/drone/push Build is passing
Add favicon and other assets to the deployed application
Copy attached assets (logo, favicon) from the build stage to the server's public directory and configure express.static to serve them.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ceced2fc-aa46-458d-ba87-ddd4b7bb1518
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/659922a9-0087-461c-90dd-6d9a58b81d4d/ceced2fc-aa46-458d-ba87-ddd4b7bb1518/LNMKOrA
2025-10-24 10:00:25 +00:00

52 lines
1.5 KiB
Docker

# Base stage with Node.js
FROM node:20-alpine AS base
WORKDIR /app
# Dependencies stage
FROM base AS dependencies
COPY package.json package-lock.json ./
RUN npm ci --only=production && \
cp -R node_modules /tmp/prod_node_modules && \
npm ci
# Build stage
FROM base AS build
COPY --from=dependencies /app/node_modules ./node_modules
COPY . .
# Build the client application (frontend only)
RUN npm run build
# Production stage
FROM base AS production
# Install ALL dependencies (including tsx for running TypeScript in production)
COPY --from=dependencies /app/node_modules ./node_modules
# Copy server source files (TypeScript)
COPY --from=build /app/server ./server
COPY --from=build /app/shared ./shared
COPY --from=build /app/drizzle.config.ts ./
COPY --from=build /app/package.json ./
COPY --from=build /app/tsconfig.json ./
# Copy built frontend to the location static.ts expects
COPY --from=build /app/dist/public ./server/public
# Copy attached assets (logo, favicon, etc.)
COPY --from=build /app/attached_assets ./server/public/attached_assets
# Set environment variables
ENV NODE_ENV=production
ENV PORT=5000
# Expose the application port
EXPOSE 5000
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD node -e "require('http').get('http://localhost:5000/api/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
# Start the application using tsx to run TypeScript directly
CMD ["npx", "tsx", "server/index.ts"]