Docker Files

This commit is contained in:
2025-12-25 18:57:36 +00:00
parent 91a9aa9c54
commit ee6712cc8e
4 changed files with 141 additions and 0 deletions

30
.dockerignore Normal file
View File

@@ -0,0 +1,30 @@
# Filaprint - Development and build files
node_modules
.git
.gitignore
*.md
.env
.env.*
!.env.example
# IDE
.vscode
.idea
# OS
.DS_Store
Thumbs.db
# Debug logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Test files
__tests__
*.test.ts
*.spec.ts
# Build cache
.svelte-kit
.turbo

12
.env.example Normal file
View File

@@ -0,0 +1,12 @@
# MongoDB Connection
MONGODB_URI=mongodb://admin:changeme@mongodb:27017/filaprint?authSource=admin
# JWT Secret for authentication (generate a random string)
JWT_SECRET=your-super-secret-jwt-key-change-this
# MongoDB Container Credentials
MONGO_USER=admin
MONGO_PASSWORD=changeme
# Application Origin (for CSRF protection)
ORIGIN=http://localhost:3000

58
Dockerfile Normal file
View File

@@ -0,0 +1,58 @@
# Build stage
FROM oven/bun:1 AS builder
WORKDIR /app
# Copy package files
COPY package.json bun.lock* ./
# Install dependencies
RUN bun install --frozen-lockfile
# Copy source code
COPY . .
# Build the application
RUN bun run build
# Production stage
FROM oven/bun:1-slim AS production
WORKDIR /app
# Copy package files for production dependencies
COPY package.json bun.lock* ./
# Install only production dependencies
RUN bun install --frozen-lockfile --production
# Copy built application from builder stage
COPY --from=builder /app/build ./build
COPY --from=builder /app/server ./server
# Create uploads directory for 3D models
RUN mkdir -p /app/static/uploads/models
# Copy static files
COPY --from=builder /app/static ./static
# Set environment variables
ENV NODE_ENV=production
ENV PORT=3000
# Expose the port
EXPOSE 3000
# Create a non-root user
RUN addgroup --system --gid 1001 nodejs && \
adduser --system --uid 1001 filaprint && \
chown -R filaprint:nodejs /app
USER filaprint
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3000/ || exit 1
# Start the application
CMD ["bun", "run", "start"]

41
docker-compose.yml Normal file
View File

@@ -0,0 +1,41 @@
services:
filaprint:
build: .
container_name: filaprint
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- MONGODB_URI=${MONGODB_URI}
- JWT_SECRET=${JWT_SECRET}
- ORIGIN=${ORIGIN:-http://localhost:3000}
volumes:
# Persist uploaded 3D models
- ./data/uploads:/app/static/uploads
depends_on:
- mongodb
networks:
- filaprint-network
mongodb:
image: mongo:7
container_name: filaprint-mongo
restart: unless-stopped
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_USER:-admin}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD:-changeme}
volumes:
- mongodb_data:/data/db
networks:
- filaprint-network
# Uncomment to expose MongoDB port for debugging
# ports:
# - "27017:27017"
networks:
filaprint-network:
driver: bridge
volumes:
mongodb_data: