7.3.4.2. 创建 Frontend 服务
要将应用程序添加到 OpenShift Container Platform 中,您需要再次使用 oc new-app
命令指定应用程序所处的存储库,该仓库需要在创建数据库服务中设置数据库相关的环境变量 :
$ 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
通过此命令,OpenShift Container Platform 会获取源代码,设置构建器镜像,构建应用程序镜像,并将新创建的镜像与 指定的环境变量 一起部署。该应用程序命名为 rails-app
。
您可以通过查看 rails-app
DeploymentConfig 的 JSON 文档来验证环境变量是否已添加:
$ oc get dc rails-app -o json
您应看到以下部分:
env": [ { "name": "POSTGRESQL_USER", "value": "username" }, { "name": "POSTGRESQL_PASSWORD", "value": "password" }, { "name": "POSTGRESQL_DATABASE", "value": "db_name" }, { "name": "DATABASE_SERVICE_NAME", "value": "postgresql" } ],
检查构建过程:
$ oc logs -f build/rails-app-1
构建完成后,您可以查看 OpenShift Container Platform 中运行的 pod。
$ oc get pods
您应看到其中一行命令以 myapp-<number>-<hash>
开头,这是您在 OpenShift Container Platform 中运行的应用程序。
在应用程序正常工作前,您需要通过运行数据库迁移脚本来初始化数据库。具体可通过两种方式实现:
- 从正在运行的前端容器手动实现:
首先,您需要使用 rsh 命令执行到 frontend 容器:
$ oc rsh <FRONTEND_POD_ID>
从容器内部运行迁移:
$ RAILS_ENV=production bundle exec rake db:migrate
如果在 development
或 test
环境中运行 Rails 应用程序,则不必指定 RAILS_ENV
环境变量。