This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.11.4. 将应用程序部署至 OpenShift Container Platform
您可将您的应用程序部署至 OpenShift Container Platform。
创建 rails-app
项目后,您将自动切换到新的项目命名空间。
在 OpenShift Container Platform 中部署应用程序涉及三个步骤:
- 从 OpenShift Container Platform 的 PostgreSQL 镜像创建数据库服务。
- 从 OpenShift Container Platform 的 Ruby 2.0 构建程序镜像和 Ruby on Rails 源代码创建前端服务,这些服务将与数据库服务相连接。
- 为应用程序创建路由。
流程
要部署 Ruby on Rails 应用程序,请为应用程序创建一个新项目:
oc new-project rails-app --description="My Rails application" --display-name="Rails Application"
$ oc new-project rails-app --description="My Rails application" --display-name="Rails Application"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.1. 创建数据库服务 复制链接链接已复制到粘贴板!
您的 Rails 应用程序需要一个正在运行的数据库服务。对于此服务,请使用 PostgreSQL 数据库镜像。
要创建数据库服务,使用 oc new-app
命令。您必须将一些在数据库容器中使用的必要环境变量传递给此命令。设置用户名、密码和数据库名称需要这些环境变量。您可随意更改这些环境变量的值。变量如下:
- POSTGRESQL_DATABASE
- POSTGRESQL_USER
- POSTGRESQL_PASSWORD
设置这些变量可确保:
- 存在具有指定名称的数据库。
- 存在具有指定名称的用户。
- 用户可使用指定密码访问指定数据库。
流程
创建数据库服务:
oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
$ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 若也要为数据库管理员设置密码,请将以下内容附加至上一命令中:
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 监控进度:
oc get pods --watch
$ oc get pods --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.2. 创建前端服务 复制链接链接已复制到粘贴板!
要将应用程序添加到 OpenShift Container Platform 中,您必须指定应用程序所在存储库。
流程
创建前端服务,并指定创建数据库服务时设置的数据库相关环境变量:
oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql
$ oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过此命令,OpenShift Container Platform 可获取源代码,设置构建程序来构建应用程序镜像,并与指定的环境变量一同来部署新创建的镜像。该应用程序命名为
rails-app
。通过查看
rails-app
部署配置的 JSON 文档来验证环境变量是否已添加:oc get dc rails-app -o json
$ oc get dc rails-app -o json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您应看到以下部分:
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查构建流程:
oc logs -f build/rails-app-1
$ oc logs -f build/rails-app-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 构建完成后,查看 OpenShift Container Platform 中运行的 pod:
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您应看到其中一行命令以
myapp-<number>-<hash>
开头,这是您在 OpenShift Container Platform 中运行的应用程序。在应用程序正常工作前,您必须运行数据库迁移脚本来初始化数据库。具体可通过两种方式实现:
从正在运行的前端容器手动实现:
使用
rsh
命令执行到前端容器中:oc rsh <frontend_pod_id>
$ oc rsh <frontend_pod_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从容器内部运行迁移:
RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake db:migrate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在
development
或test
环境中运行 Rails 应用程序,则不必指定RAILS_ENV
环境变量。
- 通过在模板中添加部署前生命周期 hook。
11.4.3. 为您的应用程序创建路由 复制链接链接已复制到粘贴板!
您可公开服务来为您的应用程序创建路由。
流程
要通过向服务提供外部可访问的主机名(如
www.example.com
)来公开服务,请使用 OpenShift Container Platform 路由。对于您的情况,需要通过键入以下命令来公开前端服务:oc expose service rails-app --hostname=www.example.com
$ oc expose service rails-app --hostname=www.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保您指定的主机名解析为路由器的 IP 地址。