google-cloud-platform - 无法在 Google Cloud Build 访问 Localhost

标签 google-cloud-platform tomcat8 google-cloud-build

我正在尝试在 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/

相关文章:

google-cloud-platform - 如何从 Google Cloud Composer 获取 Airflow db 凭据

google-cloud-platform - 是什么导致 "/dev/sda1"目录的文件大小增加?如何减少总体大小?

java - Spring Boot未在Eclipse中与Tomcat一起运行

google-app-engine - 在 Google Cloud Build 过程中连接到数据库时出现问题

python - 如何在保留引号的同时将字符串设置为 yaml 值列表?

django - 部署应用程序 Django Rest 时运行 ASGI 环境的问题

elasticsearch - 在多用途(即非专用)集群上运行Elasticsearch有任何不利之处吗?

java - 如何将tomcat访问日志发送到kafka

eclipse - Tomcat with Eclipse : Made a copy of webapp and renamed, 上下文路径没有改变

git - cloudbuild.yaml 包含不同的云构建器配置