【发布时间】:2018-08-09 10:04:19
【问题描述】:
我使用 Cloudfoundry 部署了一个 Django 应用程序。构建应用程序需要一些时间,但是我需要使用不同的启动命令来启动应用程序,而我今天唯一的解决方案是每次应用程序时都完全重新构建。
使用 Docker,更改启动命令非常简单,不需要重新构建到整个容器,必须有更有效的方法来做到这一点:
以下是启动的应用程序:
- FrontEndApp-Prod: 使用 gunicorn 的 Django 应用
- OrchesterApp-Prod: Django Celery 相机和心跳
- WorkerApp-Prod: Django Celery Workers
所有这些应用程序基本相同,只是使用了不同的路由、配置和启动命令。
下面是我使用的文件manifest.yml:
defaults: &defaults
timeout: 120
memory: 768M
disk_quota: 2G
path: .
stack: cflinuxfs2
buildpack: https://github.com/cloudfoundry/buildpack-python.git
services:
- PostgresDB-Prod
- RabbitMQ-Prod
- Redis-Prod
applications:
- name: FrontEndApp-Prod
<<: *defaults
routes:
- route: www.myapp.com
instances: 2
command: chmod +x ./launch_server.sh && ./launch_server.sh
- name: OrchesterApp-Prod
<<: *defaults
memory: 1G
instances: 1
command: chmod +x ./launch_orchester.sh && ./launch_orchester.sh
health-check-type: process
no-route: true
- name: WorkerApp-Prod
<<: *defaults
instances: 3
command: chmod +x ./launch_worker.sh && ./launch_worker.sh
health-check-type: process
no-route: true
【问题讨论】:
-
为什么不分别推送这三个应用呢?它们不是同时运行吗?添加有关系统外观的更多详细信息。这是一个 devops 周期吗?
-
我绝对可以照你说的做。但是,对我来说,它仍然是次优的。它们都共享同一个“容器”,只是使用不同的启动命令执行。我确信我可以构建样板,然后根据应用需要修改启动命令、路由、内存、实例数。
标签: django celery ibm-cloud cloud-foundry django-celery