如何 运行 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
进行生产
我是 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
进行生产