FROM node:20-alpine AS builder

WORKDIR /app

COPY frontend ./

RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi && \
    npm run build

FROM nginx:1.29 AS runner

RUN --mount=type=cache,target=/var/cache/apt \
    --mount=type=cache,target=/var/lib/apt \
    apt update \
    && apt install -y dos2unix python3 python3-dev python3-venv libaugeas-dev gcc vim cron \
    && python3 -m venv /opt/certbot/ \
    && /opt/certbot/bin/pip install --upgrade pip \
    && /opt/certbot/bin/pip install certbot certbot-nginx \
    && ln -s /opt/certbot/bin/certbot /usr/local/bin/certbot

COPY --from=builder /app/dist /opt/frontend/statics
COPY scripts/images/frontend/routes.inc /opt/frontend/routes.inc
COPY scripts/images/frontend/http_backend.conf /opt/frontend/http_backend.conf
COPY scripts/images/frontend/https_backend.conf /opt/frontend/https_backend.conf
COPY scripts/images/frontend/nginx.conf /opt/frontend/nginx.conf
COPY scripts/images/frontend/rotate-nginx-logs.sh /usr/local/bin/rotate-nginx-logs.sh

COPY scripts/images/frontend/start.sh /opt/frontend/start.sh

RUN dos2unix /opt/frontend/start.sh \
    && dos2unix /usr/local/bin/rotate-nginx-logs.sh \
    && chmod +x /opt/frontend/start.sh \
    && chmod +x /usr/local/bin/rotate-nginx-logs.sh \
    && mkdir -p /etc/nginx/cert \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && rm -f /etc/nginx/nginx.conf \
    && rm -f /etc/nginx/conf.d/default.conf

EXPOSE 3000

CMD ["/opt/frontend/start.sh"]
