如何解决Google Cloud Run中的docker-compose.yml
关于docker-compose,Dockerfile和GCP服务Cloud Run的工作方式,我有一个很大的理解问题。这使我无法推进自己拥有的项目,而且我无济于事。
我有一个docker-compose.yml文件,内容如下:
version: '2'
services:
# The Application
app:
container_name: laravel_app
build:
context: ./
dockerfile: docker/app.dockerfile
volumes:
- ./storage:/var/www/storage
# The Web Server
web:
container_name: nginx_server
build:
context: ./
dockerfile: docker/web.dockerfile
volumes:
- ./storage/logs/:/var/log/nginx
ports:
- 8080:80
如您所见,这非常简单,两项服务之一是使用php的应用程序,另一项是用于服务器的服务。两者都有自己的dockerfile,并且构建正确。在本地,一切正常,在那里没有问题。
我现在想在GCP的Cloud Run服务中部署这些服务。深入研究后,我发现可能只有一个Dockerfile
才能部署服务。有没有办法将docker-compose.yml容器部署到Cloud Run?我应该使用其他服务吗?
解决方法
直接的答案是:不,它不能照原样工作!您必须更新包装。
-
首先,Cloud Run不允许您装载卷。您需要有一个无状态的容器。使用这些文件构建容器,而不加载外部卷
-
其次,为了构建前端-后端架构,我不建议将静态部分托管在Cloud Run上。将静态文件存储在Cloud Storage(前端)上并让动态处理(后端)在Cloud Run上更好(更便宜,更快)。然后,在前面放置HTTPS Global Loadbalancer,with CDN option activated. Configure 2 backend,one with a Cloud Storage backend for the front,在第二个前面放置serverless NEG for Cloud Run。
是的,这需要大量的工作...或者您可以通过VM使用传统的IaaS,但是却失去了可伸缩性和无服务器功能的所有优势。
,您可以使用Docker Compose简化Cloud Run的本地开发环境。 GCP提供了tutorial as an example供您参考。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。