我想自动构建一个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
我做错了什么?有什么想法吗?高度赞赏反馈。
我尝试了各种基础图像,各种环境。
1条答案
按热度按时间uqdfh47h1#
我无法重现您的问题。
我使用了我自己的一个Hugo网站:
我可以运行我的网站:
还有:
对于您的问题,我添加了
Dockerfile
和cloudbuild.yaml
文件。Dockerfile
:我建立并运行了这个网站:
cloudbuild.yaml
:push
的两种方法都工作(您的方式)docker push
和枚举images
的默认云构建方式。构建它:
获取最新的构建ID
TAG
并运行容器:那也行。