创建dockerfile
FROM golang:1.17-alpine
# Optionally set HUGO_BUILD_TAGS to "extended" or "nodeploy" when building like so:
# docker build --build-arg HUGO_BUILD_TAGS=extended .
ARG HUGO_BUILD_TAGS
ARG CGO=1
ENV CGO_ENABLED=${CGO}
ENV GOOS=linux
ENV GO111MODULE=on
ENV HUGO_VERSION=0.93.3
ENV HUGO_USER=hugo
ENV BASE_DIRECORY=/home/hugo
ENV SITE_NAME=hugosite
ENV HUGO_SITE_DIRECORY=${BASE_DIRECORY}/${SITE_NAME}
ENV HUGO_URL=https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz
#hugo_extended_0.93.3_Linux-64bit.tar.gz
ENV GLIBC_VER=2.34-r0
ENV GLIBC_NAME=glibc-${GLIBC_VER}.apk
ENV THEME_NAME=book
ENV THEME_URL=https://github.com/alex-shpak/hugo-book
RUN set -ex && \
apk --update add libstdc++ curl ca-certificates git
# glibc
ENV GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc
ENV GLIBC_VERSION=2.30-r0
RUN set -ex && \
apk --update add libstdc++ curl ca-certificates && \
for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION}; \
do curl -sSL ${GLIBC_REPO}/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done && \
apk add --allow-untrusted /tmp/*.apk && \
rm -v /tmp/*.apk && \
/usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib
# 下载安装
ADD ${HUGO_URL} /tmp/
RUN tar -xzf /tmp/*.tar.gz -C /tmp && \
file="$(echo HUGO_URL)" && echo $file && \
file="$(ls -ll /tmp/hugo)" && echo $file && \
mv /tmp/hugo /usr/bin/ && \
#rm -rf /tmp/* && \
file="$(ls -ll /usr/bin/hugo)" && echo $file && \
adduser ${HUGO_USER} -D
#CMD sh
WORKDIR ${BASE_DIRECORY}
#VOLUME ["$BASE_DIRECORY", "$BASE_DIRECORY"]
#CMD ["ls","-a"]
# 安装
RUN hugo new site ${SITE_NAME} # && file="$(ls -ll /home/hugo/hugosite)" && echo $file && echo $file && file="$(pwd)" && echo $file
WORKDIR ${HUGO_SITE_DIRECORY}
RUN git init \
&& git submodule add ${THEME_URL} themes/${THEME_NAME} \
&& cp -R themes/${THEME_NAME}/exampleSite/content . \
&& echo -e "baseURL = 'http://example.org/' \r\nlanguageCode = 'en-us' \r\ntitle = 'My New Hugo Site' \r\ntheme = '${THEME_NAME}'" > config.toml
EXPOSE 20000
CMD ["hugo", "server", "-D", "--bind", "0.0.0.0", "--port", "20000"]
#CMD sh
构建运行镜像
docker build -f ./Dockerfile.hugo -t myhugo .
docker run -i -t -p 20000:20000 myhugo
配置物理机上nginx转发到docker容器
vim nginx/conf/vhost/域名.conf
server {
listen 80;
#listen [::]:80 default_server;
server_name 域名;
location / {
access_log 访问日志文件;
error_log 错误日志文件;
proxy_pass http://127.0.0.1:20000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}