feat: enhance Dockerfile and docker-compose for improved build output handling and service configuration

This commit is contained in:
yuanhau 2025-05-09 23:13:30 +08:00
parent a0b3438781
commit f17aea24cd
3 changed files with 48 additions and 42 deletions

View file

@ -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 WORKDIR /app
COPY package.json ./
COPY bun.lockb* package-lock.json* yarn.lock* ./ # Copy package files
COPY package.json ./
# Install dependencies COPY bun.lockb* package-lock.json* yarn.lock* ./
RUN bun install --frozen-lockfile || bun install
# Install dependencies
# Copy source files RUN bun install --frozen-lockfile || bun install
COPY . .
# Copy source files
# Build the application COPY . .
RUN bun run build
# Build the application
# Production stage RUN bun run build
FROM oven/bun:latest
# Production stage
WORKDIR /app FROM oven/bun:latest
# Copy package files for production WORKDIR /app
COPY --from=builder /app/package.json ./
COPY --from=builder /app/bun.lockb* ./ # Copy package files for production
COPY --from=builder /app/package.json ./
# Conditionally copy build outputs based on framework
COPY --from=builder /app/.output* /app/.output* 2>/dev/null || true # Create a shell script to handle build output copying
COPY --from=builder /app/dist* /app/dist* 2>/dev/null || true RUN echo '#!/bin/sh\n\
COPY --from=builder /app/build* /app/build* 2>/dev/null || true for dir in ".output" "dist" "build" ".next"; do\n\
COPY --from=builder /app/.next* /app/.next* 2>/dev/null || true if [ -d "/build/$dir" ]; then\n\
# If you have customized your output directory, please add your custom one here, or just remove it. :) mkdir -p "$dir"\n\
cp -r "/build/$dir/." "$dir/"\n\
fi\n\
# Install production dependencies done' > /copy-builds.sh && chmod +x /copy-builds.sh
RUN bun install --production
# Copy build outputs from builder
EXPOSE 3000 COPY --from=builder /app /build
RUN /copy-builds.sh && rm -rf /build /copy-builds.sh
# Start command will be determined by the framework
CMD ["bun", "run", "start"] # Install production dependencies
RUN bun install --production
EXPOSE 3000
CMD ["bun", "run", "start"]

View file

@ -1,10 +1,10 @@
version: '3.8' version: '3.8'
services: services:
app: newsanalyze-service:
build: . build: .
ports: ports:
- "3000:3000" - "127.0.0.1:36694:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
restart: unless-stopped restart: unless-stopped

View file

@ -9,7 +9,8 @@
"preview": "nuxt preview", "preview": "nuxt preview",
"postinstall": "nuxt prepare", "postinstall": "nuxt prepare",
"prettier": "prettier --write .", "prettier": "prettier --write .",
"createdb": "bun run createDatabase.ts" "createdb": "bun run createDatabase.ts",
"start": "bun run .output/server/index.mjs"
}, },
"dependencies": { "dependencies": {
"@fontsource-variable/noto-sans-tc": "^5.2.5", "@fontsource-variable/noto-sans-tc": "^5.2.5",