diff --git a/Dockerfile b/Dockerfile index a6d2d79..0a30caa 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,41 +1,46 @@ -FROM oven/bun:latest as builder +# If you have customized your output directory, please just remove it. :) -WORKDIR /app + FROM oven/bun:latest as builder -# Copy package files -COPY package.json ./ -COPY bun.lockb* package-lock.json* yarn.lock* ./ - -# Install dependencies -RUN bun install --frozen-lockfile || bun install - -# Copy source files -COPY . . - -# Build the application -RUN bun run build - -# Production stage -FROM oven/bun:latest - -WORKDIR /app - -# Copy package files for production -COPY --from=builder /app/package.json ./ -COPY --from=builder /app/bun.lockb* ./ - -# Conditionally copy build outputs based on framework -COPY --from=builder /app/.output* /app/.output* 2>/dev/null || true -COPY --from=builder /app/dist* /app/dist* 2>/dev/null || true -COPY --from=builder /app/build* /app/build* 2>/dev/null || true -COPY --from=builder /app/.next* /app/.next* 2>/dev/null || true -# If you have customized your output directory, please add your custom one here, or just remove it. :) - - -# Install production dependencies -RUN bun install --production - -EXPOSE 3000 - -# Start command will be determined by the framework -CMD ["bun", "run", "start"] \ No newline at end of file + WORKDIR /app + + # Copy package files + COPY package.json ./ + COPY bun.lockb* package-lock.json* yarn.lock* ./ + + # Install dependencies + RUN bun install --frozen-lockfile || bun install + + # Copy source files + COPY . . + + # Build the application + RUN bun run build + + # Production stage + FROM oven/bun:latest + + WORKDIR /app + + # Copy package files for production + COPY --from=builder /app/package.json ./ + + # Create a shell script to handle build output copying + RUN echo '#!/bin/sh\n\ + for dir in ".output" "dist" "build" ".next"; do\n\ + if [ -d "/build/$dir" ]; then\n\ + mkdir -p "$dir"\n\ + cp -r "/build/$dir/." "$dir/"\n\ + fi\n\ + done' > /copy-builds.sh && chmod +x /copy-builds.sh + + # Copy build outputs from builder + COPY --from=builder /app /build + RUN /copy-builds.sh && rm -rf /build /copy-builds.sh + + # Install production dependencies + RUN bun install --production + + EXPOSE 3000 + + CMD ["bun", "run", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 49f5c13..15df6e2 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,10 @@ version: '3.8' services: - app: + newsanalyze-service: build: . ports: - - "3000:3000" + - "127.0.0.1:36694:3000" environment: - NODE_ENV=production restart: unless-stopped diff --git a/package.json b/package.json index d65dca6..81bd9b0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "preview": "nuxt preview", "postinstall": "nuxt prepare", "prettier": "prettier --write .", - "createdb": "bun run createDatabase.ts" + "createdb": "bun run createDatabase.ts", + "start": "bun run .output/server/index.mjs" }, "dependencies": { "@fontsource-variable/noto-sans-tc": "^5.2.5",