我想自動構建一個 Docker 容器,用于顯示使用 Hugo 框架創建的網站的公共檔案。因此,我Dockerfile在 Hugo 網站的根目錄中添加了以下內容:
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

我究竟做錯了什么?有任何想法嗎?反饋高度贊賞。
我嘗試了各種基本影像,各種環境。
uj5u.com熱心網友回復:
我無法重現您的問題。
我使用了自己的 Hugo 網站之一:
git clone \
--recurse-submodules \
[email protected]: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
對于您的問題,我添加了Dockerfile和cloudbuild.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和默認的 Cloud Build 列舉方式images。
構建它:
gcloud builds submit ${PWD} \
--config=cloudbuild.yaml \
--project=${PROJECT}
獲取最新的 Build IDTAG并運行容器:
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}
這也有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525909.html
標籤:Google Cloud Collective 码头工人nginx谷歌云平台谷歌云构建雨果
下一篇:防止使用nginx訪問靜態檔案
