Procfile 和 foreman
Procfile 和 foreman
建议学时:4 小时。
Heroku 应用程序包含一个 Procfile,它指定应用程序在启动时执行的命令。你可以使用 Procfile 来声明各种进程类型,包括:
- 应用的网络服务器
- 多种类型的工作进程
- 单例进程,例如时钟
- 在部署新版本之前运行的任务
Procfile 命名和位置
Procfile 始终是一个 Procfile 没有文件扩展名的简单文本文件。
Procfile 必须位于应用程序的根目录中。如果放在其他任何地方,它就不起作用。
Procfile 格式
Procfile 在单独的行上声明其进程类型,每行都具有以下格式:
<process type>: <command>
是你的命令的字母数字名称,例如 web, worker, urgentworker, clock,等等。
表示每个程序在启动时应该执行的命令,例如 rake jobs:work
.
Web 进程
web: bundle exec rails server -p $PORT
对于许多简单的应用程序,一个 web 进程类型就足够了。对于更复杂的应用程序,并坚持更明确地声明应用程序所需的运行时进程的推荐方法,你可能希望定义其他进程类型。例如,Rails 应用程序提供了这种额外的进程类型:
worker: bundle exec rake jobs:work
在 Heroku 之外使用 Procfile
如果你有一个单独的 Rails 应用程序,也想使用 Procfile 的形式管理进程,可以使用 foreman。
参考文档
- https://devcenter.heroku.com/articles/procfile
- https://help.aliyun.com/document_detail/116527.html
foreman: 管理基于 Procfile 的应用程序
foreman 是一个基于 Procfile 的应用程序,不要将其包含 foreman 在你的 Gemfile 中。Foreman 不是库,不应影响应用程序的依赖关系树。仅仅为了满足项目的依赖矩阵而更新工头的依赖项之一是有问题的,因为这反过来可能会破坏正在做同样事情的旧应用程序。
现在的 Rails 网络应用程序运行起来变得越来越复杂。Rails 应用程序不再包含单个 Web 进程。为了不让让应用程序及其所有部分运行变得更加复杂,我们将使用 foreman 来管理这些进程。可以使用 可以使用 Procfile:
Procfile
web: bin/rails server -p 3000
js: yarn build --watch
执行
foreman start -f Procfile.dev
或者下面的脚本
bin/dev
#!/usr/bin/env bashif ! command -v foreman &> /dev/null
thenecho "Installing foreman..."gem install foreman
fiforeman start -f Procfile.dev
foreman 将启动与你的应用程序关联的所有进程,并显示 stdout 每个 stderr 进程。流程按类型进行颜色编码,以便于阅读。$PORT 将由 foreman 自动分配并提供给每个底层流程。
并发
Foreman 支持运行一种以上的每种进程类型。
# run 1 of each process type, and 2 workers
$ foreman start -c worker=2# do not run a clock process
$ foreman start -c clock=0
端口分配
Foreman 默认从 5000 开始端口分配,并按照你在 Procfile 中 Worker 和进程类型的顺序分配。
对于本文 Procfile 顶部使用的,web.1 将被分配端口 5000,worker.1 将被分配 5100,clock.1 将被分配 5200。如果你运行 2 个 Web 进程,web.2 将被分配 5001。
实践
rails new app -j esbuild -T
Procfile.dev
web: bin/rails server -p 3000
js: yarn build --watch
我们也可以加入其他进程,例如我们使用 docker-compose 启动一个 redis 服务
docker-compose.yml
version: '3'
services:redis:image: redis:5ports:- 6379:6379
继续调整 Procfile.dev
docker: docker-compose up
web: bin/rails server -p 3000
js: yarn build --watch
Procfile 和 foreman相关推荐
- Foreman安装配置
Foreman安装配置 官方网站: https://theforeman.org 环境: CentOS7.2 puppet-3.8.7 foreman-1.13 一.配置yum源 https://th ...
- foreman源NO_PUBKEY 6F8600B9563278F6
版权声明:本文可能为博主原创文章,若标明出处可随便转载. https://blog.csdn.net/Jailman/article/details/82149269 /etc/apt/sources ...
- foreman架构的引入2-安装前环境准备
零基础学习Puppet自动化配置管理系列文档 Foreman官网提供了每个版本非常完善的安装步骤,无论是源码安装还是rpm包安装都变得非常方便.而且Foreman通过puppet模块对安装步骤进行了封 ...
- foreman容器化部署
一.前言 最近公司要求对一批GPU服务器安装操作系统,之前同事一直采用cobbler安装系统,一旦服务器设置为pxe优先启动,会出现重复安装系统的问题,并且如果线上服务器忘记修改第一启动项为硬盘启动, ...
- Centos 7 Puppet之foreman介绍安装测试
一.简介 1.前言(引用一下网上的资料) 随着企业的 Linux 系统数量越来越多,管理问题便成为一个相对麻烦并需要急 迫解决的问题,这里有 2 个 Key Message:1)统一管控体系非常重要, ...
- foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)
零基础学习Puppet自动化配置管理系列文档 注意:本实验是在离线情况下安装的,所以需要在本地创建自己的yum仓库,创建方法可参考<如何根据版本制作属于自己的puppet yum源>,如何 ...
- foreman架构的引入6-整合puppetmaster
零基础学习Puppet自动化配置管理系列文档 注:以下内容是在foreman1.6.3+puppet2.6.2环境下进行操作.更多配置请参考官网http://theforeman.org/manual ...
- ubuntu12.04安装puppet foreman
一.安装部分 前提: aptitude -y install puppet augeas-tools aptitude -y install puppetmaster sqlite3 libsqlit ...
- 几种部署工具比较foreman, ansible, fuel
有些可能不是一个级别的东东. 在onos部署中,可以用到的是foreman, fuel, 而ansible,作为一种方便的底层部署工具,目前已经为fuel所使用中.odl也在用?FIXME forem ...
最新文章
- js监听地址栏变化_vue中本地储存也可以实时监听
- SVN 版本控制的数据合并规则
- 文件I0通用的IO模型
- Introduction of Version Control/Git, SVN
- centos 6.5 yum java_Centos6.5 yum 安装jdk1.8
- MyBatis动态传入表名,字段名参数的解决办法
- 多路查找树之2-3树的插入原理
- 【华为】对标谷歌Dropout专利,华为开源自研算法Disout,多项任务表现更佳
- Android编程 移动应用开发 经典习题案例 (附案例 注意点)
- 音频-什么是PCM编码格式?
- mysql删除图书信息,图书管理系统(一):出版社列表增加、删除和编辑
- 一、OpenAI ChatGPT 注册使用
- 被吹上天的802.11ac Wave2到底好在哪?还有,Wave1哪去了?
- bp1048仿真器的使用
- JAVA计算机毕业设计社区生鲜电商平台(附源码、数据库)
- PowerShell的基本使用方法
- Vue使用Object标签对接IC读卡器硬件
- 非常好用的论文写作模板!
- 基于网页网站在线视频点播系统 毕业设计毕设源码毕业论文开题报告参考(1)功能概要
- 还原分区失败怎么办?为什么会出现还原分区失败