diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 00000000..74340d4b --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,6 @@ +/.git +/node_modules +.dockerignore +.env +Dockerfile +fly.toml diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 00000000..bcb23286 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,45 @@ +# syntax = docker/dockerfile:1 + +# Adjust NODE_VERSION as desired +ARG NODE_VERSION=20.18.0 +FROM node:${NODE_VERSION}-slim AS base + +LABEL fly_launch_runtime="Node.js" + +# Node.js app lives here +WORKDIR /app + +# Set production environment +ENV NODE_ENV="production" + + +# Throw-away build stage to reduce size of final image +FROM base AS build + +# Install packages needed to build node modules +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3 + +# Install node modules +COPY package-lock.json package.json ./ +RUN npm ci --include=dev + +# Copy application code +COPY . . + +# Build application +RUN npm run build + +# Remove development dependencies +RUN npm prune --omit=dev + + +# Final stage for app image +FROM base + +# Copy built application +COPY --from=build /app /app + +# Start the server by default, this can be overwritten at runtime +EXPOSE 3000 +CMD [ "npm", "run", "start" ] diff --git a/backend/fly.toml b/backend/fly.toml new file mode 100644 index 00000000..339c01a0 --- /dev/null +++ b/backend/fly.toml @@ -0,0 +1,23 @@ +# fly.toml app configuration file generated for quicksnip on 2025-07-02T13:29:43Z +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = 'quicksnip' +primary_region = 'arn' + +[build] + +[http_service] + internal_port = 3000 + force_https = true + auto_stop_machines = 'stop' + auto_start_machines = true + min_machines_running = 0 + processes = ['app'] + +[[vm]] + memory = '1gb' + cpu_kind = 'shared' + cpus = 1 + memory_mb = 1024