diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e4b8c67 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +public/ +resources/ +.hugo_build.lock \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..982cf4e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM debian:stable-slim AS hugobuild + +RUN \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --assume-yes wget ca-certificates && \ + wget -O /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.120.4/hugo_extended_0.120.4_linux-amd64.deb && \ + DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --assume-yes /tmp/hugo.deb + +COPY . /src + +RUN \ + hugo -s /src --gc --minify + +FROM alpine:latest + +RUN \ + apk -U upgrade && \ + apk add nginx curl && \ + mkdir -p /wwwroot /logs + +COPY docker/rootfs / +COPY --from=hugobuild /src/public /wwwroot/ + +RUN \ + chown -R nginx:www-data /wwwroot /logs && \ + chmod -R a-x,a=rX,ug+w /wwwroot /logs + +# config test +RUN nginx -t + +HEALTHCHECK --timeout=10s CMD curl --silent --fail -o /dev/null http://127.0.0.1:80/ + +ENTRYPOINT [ "/usr/sbin/nginx" ] diff --git a/docker/rootfs/etc/nginx/conf.d/nodaemon.conf b/docker/rootfs/etc/nginx/conf.d/nodaemon.conf new file mode 100644 index 0000000..ef1f9c1 --- /dev/null +++ b/docker/rootfs/etc/nginx/conf.d/nodaemon.conf @@ -0,0 +1 @@ +daemon off; diff --git a/docker/rootfs/etc/nginx/http.d/default.conf b/docker/rootfs/etc/nginx/http.d/default.conf new file mode 100644 index 0000000..bc85257 --- /dev/null +++ b/docker/rootfs/etc/nginx/http.d/default.conf @@ -0,0 +1,22 @@ +server { + listen 80 default_server; + listen [::]:80 default_server; + server_name _; + access_log /logs/nginx.access.log main; + sendfile off; + root /wwwroot; + index index.html; + + location = /404.html { + internal; + } +} + +gzip on; +gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon font/woff2 font/woff application/x-font-woff; +gzip_disable "msie6"; + +etag on; +if_modified_since exact; +add_header Pragma "public"; +add_header Cache-Control "max-age=31536000, public";