diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fcf2cc5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +Dockerfile +.dockerignore +node_modules +npm-debug.log +UNLICENSE +README.md +.next +.git \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8d21609 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,44 @@ +FROM oven/bun:1 AS base + +FROM base AS deps +WORKDIR /app + +COPY package.json bun.lockb* ./ +RUN bun install + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +ENV NEXT_TELEMETRY_DISABLED=1 + +# Build the application +RUN bun run build + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +# Public folder not used at the moment +# COPY --from=builder /app/public ./public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["bun", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..220b97a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + im-a-server: + build: . + ports: + - 3000:3000 + volumes: + - .:/app \ No newline at end of file