# ---- 자산 URL 에 내용 해시를 박는 단계 ----
# 프록시(NPM)가 js/css 응답에 제 캐시 헤더(Expires, max-age)를 덧붙이므로
# 원본에서 no-cache 를 줘도 브라우저가 옛 파일을 계속 쓴다. 내용이 바뀌면
# URL 도 바뀌게 해 두어야 새 배포가 제대로 반영된다.
FROM alpine:3.20 AS stamp
WORKDIR /site
COPY site/ ./
RUN set -eu; \
    v=$(cat assets/crossword.css assets/crossword.js | sha256sum | cut -c1-10); \
    for f in *.html; do \
        sed -i -e "s|assets/crossword\.css|assets/crossword.css?v=${v}|g" \
               -e "s|assets/crossword\.js|assets/crossword.js?v=${v}|g" "$f"; \
    done; \
    echo "asset stamp: ${v}"; \
    grep -o 'assets/crossword\.[a-z]*?v=[0-9a-f]*' korean.html

FROM nginx:1.27-alpine

# 기본 서버 설정 제거 후 8080 포트용 설정 적용
RUN rm -f /etc/nginx/conf.d/default.conf
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=stamp /site/ /usr/share/nginx/html/

EXPOSE 8080
