nginx hugo:用Google Cloud Build构建静态网站

cyej8jka  于 2022-11-02  发布在  Nginx
关注(0)|答案(1)|浏览(257)

我想自动构建一个Docker容器,显示用Hugo框架创建的网站的公共文件。因此,我在Hugo网站的根目录下添加了下面的Dockerfile

FROM klakegg/hugo:0.104.3-onbuild AS hugo

FROM nginx
COPY --from=hugo /target /usr/share/nginx/html

这个多阶段构建的想法是在运行中创建网站文件,并使用nginx容器显示结果。当我在Ubuntu 20.04 Linux PC上本地创建容器并运行它时,一切都按预期运行,网站位于localhost:8080

docker build -t hugo-local .
docker run -d -p 8080:80 hugo-local

如果我使用Google Cloud Build构建容器,构建过程将成功完成。文件也将被复制到正确的目录(/usr/share/nginx/html)。

steps:

# This step builds the container image.

- name: 'gcr.io/cloud-builders/docker'
  id: Build
  args:
  - 'build'
  - '-t'
  - 'eu.gcr.io/gcp-project/hugo-cloud:$BUILD_ID'
  - '.'

# This step pushes the image to Container Registry

# The PROJECT_ID and SHORT_SHA variables are automatically

# replaced by Cloud Build.

- name: 'gcr.io/cloud-builders/docker'
  id: Push
  args:
  - 'push'
  - 'eu.gcr.io/gcp-project/hugo-cloud'

但是,并不呈现网站,而是显示默认的nginx欢迎页面:

docker run -d -p 8080:80 hugo-cloud

我做错了什么?有什么想法吗?高度赞赏反馈。
我尝试了各种基础图像,各种环境。

uqdfh47h

uqdfh47h1#

我无法重现您的问题。
我使用了我自己的一个Hugo网站:

git clone \
--recurse-submodules \
git@github.com:me/repo.git

我可以运行我的网站:

hugo server -D

还有:

podman run \
--interactive --tty --rm \
--volume=${PWD}:/src \
--publish=1313:1313 \
docker.io/klakegg/hugo:0.104.3 \
  server -D

对于您的问题,我添加了Dockerfilecloudbuild.yaml文件。
Dockerfile

FROM klakegg/hugo:0.104.3-onbuild AS hugo

FROM nginx
COPY --from=hugo /target /usr/share/nginx/html

我建立并运行了这个网站:

podman build \
--tag=snippets:$(git rev-parse HEAD) \
--file=./Dockerfile \
${PWD}

podman run \
--interactive --tty --rm \
snippets:$(git rev-parse HEAD)

cloudbuild.yaml

steps:
- name: gcr.io/cloud-builders/docker
  id: build
  args:
  - build
  - --tag=gcr.io/${PROJECT_ID}/hugo-cloud:${BUILD_ID}
  - '.'

# - name: gcr.io/cloud-builders/docker

# id: push

# args:

# - push

# - gcr.io/${PROJECT_ID}/hugo-cloud:${BUILD_ID}

images:
- gcr.io/${PROJECT_ID}/hugo-cloud:${BUILD_ID}

push的两种方法都工作(您的方式)docker push和枚举images的默认云构建方式。
构建它:

gcloud builds submit ${PWD} \
--config=cloudbuild.yaml \
--project=${PROJECT}

获取最新的构建ID TAG并运行容器:

TAG=$(\
  gcloud builds list \
  --limit=1 \
  --project=${PROJECT} \
  --format="value(id)")

podman run \
--interactive --tty --rm \
--publish=8080:80 \
gcr.io/${PROJECT}/hugo-cloud:${TAG}

那也行。

相关问题