如何在Google Cloud Run上运行docker-compose?

3

我是GCP的新手,正在尝试使用docker-compose部署我的spring boot web服务。 在我的docker-compose.yml文件中,我有3个服务:我的应用程序服务,mysql服务和Cassandra服务。 在本地,它运行得很好。我还添加了一个cloudbuild.yaml文件:

steps:
- name: 'docker/compose:1.28.2'
  args: ['up', '-d']
- name: 'gcr.io/cloud-builders/docker'
  args: ['tag', 'workspace_app:latest', 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
images: ['gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']

在Google Cloud Build上构建成功了。但是,当我尝试在Google Cloud Run上运行镜像时,它没有调用docker-compose。我该如何处理才能在生产环境中使用docker-compose?


请问您是否可以进一步解释您的目标?您在Cloud Build上指定了一个Docker Compose步骤来构建您的镜像,我不确定为什么您希望它在Cloud Run中调用。此外,在Cloud Run中,您应该只部署无状态容器,因此它不是正确的平台来部署数据库服务。 - Donnald Cucharo
在云上,执行dockerfile的入口点是-java -jar。 我希望能够在云上运行docker-compose up --build命令。感谢您的澄清。 - alia
3个回答

7

使用Cloud Run,您只能部署一个容器镜像。该容器可以包含多个二进制文件,您可以并行运行它们。但请记住:

  • 当没有请求被处理时,CPU会被限制。在Cloud Run上不推荐后台进程/应用程序,而是更倾向于在Cloud Run上使用请求/响应应用程序(即Web服务器)。
  • Cloud Run仅支持HTTP请求。不支持TCP连接(例如MySQL连接)。
  • Cloud Run是无状态的。您无法在其中持久化数据。
  • 所有数据都存储在内存中(目录/tmp可写)。您可以超出实例内存的总大小(您的应用占用空间+存储在内存中的文件)。
  • 与前一点相关,当实例被卸载时(您无法管理它,因为它是无服务器的),您会丢失所有放入内存中的内容。

因此,MySQL和Cassandra服务必须在其他位置进行托管。


谢谢您的澄清 :) 我会寻找其他的替代方案。 - alia
@alia,你找到了一个完整的教程来将你的Docker Compose应用程序发送到Google Cloud吗?我也在寻找解决方案。 - paul

0
最后,我使用docker-compose在谷歌虚拟机实例上部署了我的解决方案。 首先,我们必须在我们的虚拟机实例上克隆我们的git仓库。 然后,在包含docker-compose.yml、dockerfile和war文件的克隆仓库上,我们执行了以下命令:
docker run --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v "$PWD:$PWD" \
    -w="$PWD" \
    docker/compose:1.29.1 up

现在,我们的解决方案已经通过docker-compose在生产环境中运行成功了。


2
那么,你没有在Cloud Run上成功吗? - bandungeuy

-2
docker-compose -f dirfile/ cloudbuild.yaml up

并且为了检查它,请输入以下命令

docker images

用于检查你的容器

docker container ls -a 

如果要检查容器是否运行,请输入以下命令

docker ps

我应该在Google Cloud Run的哪里编写这个命令? - alia
你可以在你的电脑命令提示符中输入这个命令 @alia - Abdalrhman Alkraien
在 Google Cloud 平台上,当我使用 cloudbuild.yaml 执行 declancher 后,会生成一个镜像。然后在 Cloud Run 部分,我选择此镜像来部署新版本。那么请问我应该在哪里使用这个命令? - alia
请查看此链接:http://docs.h2o.ai/driverless-ai/latest-stable/docs/userguide/install/google-docker-container.html - Abdalrhman Alkraien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接