写个dockerfile自动部署hugo

楚天乐 1653 0 条

创建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;

    }
}

打赏

微信打赏

支付宝打赏



与本文相关的文章

发表我的评论
昵称 (必填)
邮箱 (必填)
网址
执行时间: 65.116882324219 毫秒