我正在尝试在 GCP 中使用 Google Cloud Build 构建项目。这是我的 cloudbuild.yaml 文件示例。
steps:
- id: Docker Run
name: gcr.io/cloud-builders/docker
args: ['run', '-p', '8080:8080', '--name', 'test', '-d', 'asia.gcr.io/project/myTomcatImage:latest']
- id: Export
name: gcr.io/cloud-builders/javac
waitFor:
- Docker Run
entrypoint: bash
args:
- -exc
- |
chmod 755 ./tool/deploy.sh
./tool/deploy.sh
env:
- _EXPORT_VALUE=${_EXPORT_VALUE}
- id: Docker Commit
name: gcr.io/cloud-builders/docker
args: ['commit', 'test', 'asia.gcr.io/project/myTomcatImage:latest']
- id: Docker Push
name: gcr.io/cloud-builders/docker
args: ['push', 'asia.gcr.io/project/myTomcatImage:latest']
“myTomcatImage”是基于Tomcat8.5的docker镜像。打开8080端口后,我要访问http://127.0.0.1:8080在 ./tool/deploy.sh 导出步骤。(在 Shell 脚本中,有一个使用 tomcat 服务器的可运行 jar 文件)
我认为它会起作用,但它导致了如下所示的错误。
Connect to 127.0.0.1:8080 [/127.0.0.1] failed: Connection refused (Connection refused)
我尝试授予访问云源存储库的权限,打开防火墙,但不起作用。 谁能给我一些访问云构建本地主机的想法?或任何其他解决方案?我将感谢你的帮助。
最佳答案
Cloud Build 的原理非常简单。每一步都是独立的,每一步之间只保留/workspace
目录。
因此,加载一个容器,完成一个进程,然后从内存中卸载与加载的容器/运行进程相关的所有内容,然后运行下一步。
最后,所有这一切都表明您的 docker run
命令在导出步骤运行时不再运行。
如何解决?
在同一步骤中,您需要运行您的 docker 镜像并运行您的 deploy.sh
。例如,如果您需要 Java,则需要将其安装在第一步的 Docker 镜像上。
关于google-cloud-platform - 无法在 Google Cloud Build 访问 Localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64569680/