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
通过此命令,OpenShift Container Platform 会获取源代码,设置构建程序,构建应用镜像,并将新创建的镜像与指定的环境变量一起部署。该应用程序命名为
rails-app
。通过查看
rails-app
部署配置的 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
命令执行到前端容器中:$ oc rsh <frontend_pod_id>
从容器内部运行迁移:
$ RAILS_ENV=production bundle exec rake db:migrate
如果在
development
或test
环境中运行 Rails 应用程序,则不必指定RAILS_ENV
环境变量。
- 通过在模板中添加部署前生命周期 hook。