$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>.git
This topic reviews how to migrate Python, Ruby, PHP, Perl, Node.js, JBoss EAP, JBoss WS (Tomcat), and Wildfly 10 (JBoss AS) web framework applications from OpenShift version 2 (v2) to OpenShift version 3 (v3).
Set up a new GitHub repository and add it as a remote branch to the current, local v2 Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>.git
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
Ensure that all important files such as setup.py, wsgi.py, requirements.txt, and etc are pushed to new repository.
Ensure all required packages for your application are included in requirements.txt.
S2I-python does not support mod_wsgi anymore. However, gunicorn is supported and it is an alternative for mod_wsgi. So, add gunicorn package to requirements.txt.
Use the oc
command to launch a new Python application from the builder image
and source code:
$ oc new-app --strategy=source python:3.3~https://github.com/<github-id>/<repo-name> --name=<app-name> -e <ENV_VAR_NAME>=<env_var_value>
Supported Python Versions
v2 | v3 |
---|---|
Python: 2.6, 2.7, 3.3 |
Python: 2.7, 3.3, 3.4 |
Django |
Django-psql-example (quickstart) |
Set up a new GitHub repository and add it as a remote branch to the current, local v2 Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>.git
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
If you do not have a Gemfile and are running a simple rack application, copy this Gemfile into the root of your source:
https://github.com/sclorg/ruby-ex/blob/master/Gemfile
The latest version of the rack gem that supports Ruby 2.0 is 1.6.4, so the
Gemfile needs to be modified to For Ruby 2.2 or later, use the rack gem 2.0 or later. |
Use the oc
command to launch a new Ruby application from the builder image and
source code:
$ oc new-app --strategy=source ruby:2.0~https://github.com/<github-id>/<repo-name>.git
Supported Ruby Versions
v2 | v3 |
---|---|
Ruby: 1.8, 1.9, 2.0 |
Ruby: 2.0, 2.2 |
Ruby on Rails: 3, 4 |
Rails-postgresql-example (quickstart) |
Sinatra |
Set up a new GitHub repository and add it as a remote branch to the current, local v2 Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
Use the oc
command to launch a new PHP application from the builder image and
source code:
$ oc new-app https://github.com/<github-id>/<repo-name>.git --name=<app-name> -e <ENV_VAR_NAME>=<env_var_value>
Supported PHP Versions
v2 | v3 |
---|---|
PHP: 5.3, 5.4 |
PHP:5.5, 5.6 |
PHP 5.4 with Zend Server 6.1 |
|
CodeIgniter 2 |
|
HHVM |
|
Laravel 5.0 |
|
cakephp-mysql-example (quickstart) |
Set up a new GitHub repository and add it as a remote branch to the current, local v2 Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
Edit the local Git repository and push changes upstream to make it v3 compatible:
In v2, CPAN modules reside in .openshift/cpan.txt. In v3, the s2i builder looks for a file named cpanfile in the root directory of the source.
$ cd <local-git-repository> $ mv .openshift/cpan.txt cpanfile
Edit cpanfile, as it has a slightly different format:
format of cpanfile | format of cpan.txt |
---|---|
requires ‘cpan::mod’; |
cpan::mod |
requires ‘Dancer’; |
Dancer |
requires ‘YAML’; |
YAML |
Remove .openshift directory
In v3, action_hooks and cron tasks are not supported in the same way. See Action Hooks for more information. |
Use the oc
command to launch a new Perl application from the builder image and
source code:
$ oc new-app https://github.com/<github-id>/<repo-name>.git
Supported Perl Versions
v2 | v3 |
---|---|
Perl: 5.10 |
Perl: 5.16, 5.20 |
Dancer-mysql-example (quickstart) |
Set up a new GitHub repository and add it as a remote branch to the current, local Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
Edit the local Git repository and push changes upstream to make it v3 compatible:
Remove the .openshift directory.
In v3, action_hooks and cron tasks are not supported in the same way. See Action Hooks for more information. |
Edit server.js.
L116 server.js: 'self.app = express();'
L25 server.js: self.ipaddress = '0.0.0.0';
L26 server.js: self.port = 8080;
Lines(L) are from the base V2 cartridge server.js. |
Use the oc
command to launch a new Node.js application from the builder image
and source code:
$ oc new-app https://github.com/<github-id>/<repo-name>.git --name=<app-name> -e <ENV_VAR_NAME>=<env_var_value>
Supported Node.js Versions
v2 | v3 |
---|---|
Node.js 0.10 |
Nodejs: 0.10 |
Nodejs-mongodb-example (quickstart) |
Set up a new GitHub repository and add it as a remote branch to the current, local Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
If the repository includes pre-built .war files, they need to reside in the deployments directory off the root directory of the repository.
Create the new application using the JBoss EAP 6 builder image (jboss-eap64-openshift) and the source code repository from GitHub:
$ oc new-app --strategy=source jboss-eap64-openshift~https://github.com/<github-id>/<repo-name>.git
Set up a new GitHub repository and add it as a remote branch to the current, local Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
If the repository includes pre-built .war files, they need to reside in the deployments directory off the root directory of the repository.
Create the new application using the JBoss Web Server 3 (Tomcat 7) builder image (jboss-webserver30-tomcat7) and the source code repository from GitHub:
$ oc new-app --strategy=source jboss-webserver30-tomcat7-openshift~https://github.com/<github-id>/<repo-name>.git --name=<app-name> -e <ENV_VAR_NAME>=<env_var_value>
Set up a new GitHub repository and add it as a remote branch to the current, local Git repository:
$ git remote add <remote-name> https://github.com/<github-id>/<repo-name>
Push the local v2 source code to the new repository:
$ git push -u <remote-name> master
Edit the local Git repository and push the changes upstream to make it v3 compatible:
Remove .openshift directory.
In v3, action_hooks and cron tasks are not supported in the same way. See Action Hooks for more information. |
Add the deployments directory to the root of the source repository. Move the .war files to ‘deployments’ directory.
Use the the oc
command to launch a new Wildfly application from the builder
image and source code:
$ oc new-app https://github.com/<github-id>/<repo-name>.git --image-stream=”openshift/wildfly:10.0" --name=<app-name> -e <ENV_VAR_NAME>=<env_var_value>
The argument |
v2 | v3 |
---|---|
JBoss App Server 7 |
|
Tomcat 6 (JBoss EWS 1.0) |
jboss-webserver30-tomcat7-openshift: 1.1 |
Tomcat 7 (JBoss EWS 2.0) |
|
Vert.x 2.1 |
|
WildFly App Server 10 |
|
WildFly App Server 8.2.1.Final |
|
WildFly App Server 9 |
|
CapeDwarf |
|
JBoss Data Virtualization 6 |
|
JBoss Enterprise App Platform 6 |
jboss-eap64-openshift: 1.2, 1.3 |
JBoss Unified Push Server 1.0.0.Beta1, Beta2 |
|
JBoss BPM Suite |
|
JBoss BRMS |
|
jboss-eap70-openshift: 1.3-Beta |
|
eap64-https-s2i |
|
eap64-mongodb-persistent-s2i |
|
eap64-mysql-persistent-s2i |
|
eap64-psql-persistent-s2i |