如何 运行 docker-在 google 云 运行 上撰写?

How to run docker-compose on google cloud run?

我是 GCP 的新手,我正在尝试使用 docker-compose 部署我的 spring 启动 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 云构建的构建成功。但是,当我尝试 运行 google 云 运行 上的图像时,它不会调用 docker-compose。 我必须如何处理才能在生产中使用 docker-compose?

docker-compose -f dirfile/ cloudbuild.yaml up

为了检查它写这个命令

docker images

并检查你的conatiner

docker container ls -a 

并检查容器 运行 是否写入此命令

docker ps

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

  • CPU 在没有请求被处理时被限制。不推荐在 Cloud 运行 上使用背景 process/app,更喜欢 Cloud 运行(网络服务器)上的 Request/Response 应用程序。
  • Cloud 运行 仅支持 HTTP 请求。不支持 TCP 连接(例如 MySQL 连接)。
  • 云 运行 是无状态的。您不能在其中保存数据。
  • 所有数据都存储在内存中(目录/tmp可写)。您可以超过实例内存的总大小(您的应用占用空间 + 您存储在内存中的文件)
  • 与前一点相关,当实例被卸载时(你不管理那个,它是无服务器的),你丢失了所有你放在内存中的东西。

因此,MySQL 和 Cassandra 服务必须托管在别处

最后,我使用 docker-compose 在 google 虚拟机实例上部署了我的解决方案。 首先,我们必须在虚拟机实例上克隆 git 存储库。 然后,在当然包含 docker-compose.yml、docker 文件和 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

进行生产