From 8ffcd8a266f66b6da799deb737b809ee8ccf016d Mon Sep 17 00:00:00 2001 From: Kunthawat Date: Tue, 10 Mar 2026 22:01:11 +0700 Subject: [PATCH] chore: Add Dockerfile.astro for root-level Astro deployment - Builds dealplustech-astro subdirectory - Creates data directory for SQLite database - Exposes port 4321 - Health checks configured Use this Dockerfile in Easypanel for Astro deployment. --- Dockerfile.astro | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Dockerfile.astro diff --git a/Dockerfile.astro b/Dockerfile.astro new file mode 100644 index 000000000..3b2ed313f --- /dev/null +++ b/Dockerfile.astro @@ -0,0 +1,47 @@ +# Build Stage - Astro Project +FROM node:20-alpine AS builder + +WORKDIR /app + +# Copy Astro project only +COPY dealplustech-astro/package*.json ./ +RUN npm ci + +COPY dealplustech-astro/ ./ + +# Create data directory for database +RUN mkdir -p data + +# Build Astro +RUN npm run build + +# Production Stage +FROM node:20-alpine + +WORKDIR /app + +# Install SQLite runtime +RUN apk add --no-cache sqlite-libs + +# Copy package files +COPY dealplustech-astro/package*.json ./ +RUN npm ci --production + +# Copy built assets +COPY --from=builder /app/dist ./dist +COPY --from=builder /app/public ./public +COPY --from=builder /app/astro.config.mjs ./ +COPY --from=builder /app/data ./data + +EXPOSE 4321 + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD node -e "require('http').get('http://localhost:4321', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})" + +ENV NODE_ENV=production +ENV ASTRO_DB_REMOTE_URL=file:/app/data/consent.db +ENV PORT=4321 + +# Start Astro preview server +CMD ["npm", "run", "preview", "--", "--host", "0.0.0.0", "--port", "4321"]