# Stage 1: Build Astro static site FROM node:18-slim AS build WORKDIR /app COPY app/package*.json ./ RUN npm install COPY app/ . # Ensure public/data is a real directory (not symlink) RUN set -e; \ rm -rf public/data; \ mkdir -p public/data; \ cp -a src/content/assets/data/. public/data/ RUN npm run build # Stage 2: Serve with nginx FROM nginx:alpine COPY --from=build /app/dist /app/dist COPY nginx.conf /etc/nginx/nginx.conf COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN mkdir -p /var/cache/nginx /var/run /var/log/nginx /var/lib/nginx/body /tmp && \ chmod -R 777 /var/cache/nginx /var/run /var/log/nginx /var/lib/nginx /tmp /app EXPOSE 7860 ENTRYPOINT ["/entrypoint.sh"]