Files
Trackeep/frontend/Dockerfile
T
Tomas Dvorak 954a1a1080 feat: migrate to DragonflyDB and clean up environment configuration
- Replace Redis with DragonflyDB for better performance and memory efficiency
- Remove redundant environment variables (POSTGRES_*, ENCRYPTION_KEY, OAUTH_SERVICE_URL)
- Consolidate database configuration to use single DB_* variables
- Use JWT_SECRET for both JWT tokens and encryption
- Remove PORT variable redundancy, use BACKEND_PORT consistently
- Clean up docker-compose configurations for dev/prod consistency
- Add DragonflyDB configuration with optimized memory usage
- Remove redis.conf as it's no longer needed
- Update health checks to use Redis-compatible CLI for DragonflyDB
- Add missing VITE_API_URL to production frontend
- Fix GitHub Actions to use correct go.sum path
- Clean up development directories and unused files
2026-03-05 23:51:34 +01:00

47 lines
1.3 KiB
Docker

# Build stage
FROM node:22-alpine AS builder
WORKDIR /app
# Accept build arguments for VITE environment variables
ARG VITE_DEMO_MODE=false
ARG VITE_API_URL=http://localhost:8080
ARG VITE_OAUTH_SERVICE_URL=https://oauth.trackeep.org
# Copy package files
COPY frontend/package*.json ./frontend/
RUN cd frontend && npm install --include=dev
# Copy frontend source code only
COPY frontend/ ./frontend/
# Create a .env.production file with build arguments
RUN cd frontend && echo "VITE_DEMO_MODE=${VITE_DEMO_MODE}" >> .env.production && \
echo "VITE_API_URL=${VITE_API_URL}" >> .env.production && \
echo "VITE_OAUTH_SERVICE_URL=${VITE_OAUTH_SERVICE_URL}" >> .env.production
# Build the application (frontend only)
RUN cd frontend && npm run build
# Production stage
FROM nginx:alpine
# Copy built assets from builder stage
COPY --from=builder /app/frontend/dist /usr/share/nginx/html
# Copy the entrypoint script
COPY frontend/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# Copy nginx configuration
COPY frontend/nginx.conf /etc/nginx/nginx.conf
# Make a backup of the original index.html for runtime substitution
RUN cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# Expose port (will be dynamically set by entrypoint)
EXPOSE 80
# Start the entrypoint script
ENTRYPOINT ["/docker-entrypoint.sh"]