Running on Docker
Follow the steps given below to run a WSO2 product as a service on Private PaaS, which runs on Docker:
Step 1: Deploying Private PaaS on a preferred IaaS
For more information, see deploying PPaaS on a preferred IaaS.
Step 2: Downloading the product pack
Download the required product pack from the respective product download page.
Example: Download ESB from here.
- Copy the downloaded
.zip
file to thepacks
folder, which is in the/etc/puppet/modules/wso2installer/files/<SERVER_NAME>
directory.
Example: When configuring ESB, copy the file to the/etc/puppet/modules/wso2installer/files/wso2esb481/packs
directory.
Step 3: Building and importing Docker images
Download the Private PaaS cartridges from the product page.
Navigate to the
<CARTRIDGE_HOME>/docker
directory.
Example:cd <ESB_4.8.1_CARTRIDGE_HOME>/docker
Run the
build.sh
file to build the Docker image.This will copy the plugins and the Template Module to the Docker image.
./build.sh
List the Docker images.
docker images
Example response format: If you have successfully build the Docker image, you will get the following as the response:
wso2/das 3.0.0 ac57800e96c2 2 minutes ago 777.6 MB
Save the new image to a
.tar
file.docker save <NEW_IMAGE_NAME> > <LOCATION_OF_OF_TAR_FILE>
For example:
docker save myppaasimage > /tmp/myppaasimage.tar
Copy the Docker image to the Kubernetes minion node.
scp <IMAGE_NAME>.tar core@<NODE_IP>:
Example:
scp myppaasimage.tar core@172.17.8.102:
Execute the
kubectl get
nodes
command to get the IP address of the Kubernetes nodes.SSH into the Kubernetes node using one of the following commands:
ssh core@<NODE_IP> or vagrant ssh node-01
Load the
.tar
file to the Kubernetes node.docker load < <LOCATION_OF_OF_TAR_FILE>
Example:
docker load < /tmp/myppaasimage.tar
If more than one Kubernetes node exists, repeat step 4, 5 and 6 for the remaining nodes.
Step 4: Creating product specific databases
It is mandatory to create the registry database for all products.
Example:
mysql> create database regdb; mysql> use regdb; mysql> source <APIM_HOME>/dbscripts/mysql.sql; mysql> grant all on regdb.* TO username@localhost identified by "password";
Create a database (or databases depending on the requirement) using the following commands, where <PRODUCT_HOME>
is the path to any of the product instances you installed, and specify the username
and password
.
About using MySQL in different operating systems
For users of Microsoft Windows, when creating the database in MySQL, it is important to specify the character set as latin1. Failure to do this may result in an error (error code: 1709) when starting your cluster. This error occurs in certain versions of MySQL (5.6.x) and is related to the UTF-8 encoding. MySQL originally used the latin1 character set by default, which stored characters in a 2-byte sequence. However, in recent versions, MySQL defaults to UTF-8 to be friendlier to international users. Hence, you must use latin1 as the character set as indicated below in the database creation commands to avoid this problem. Note that this may result in issues with non-latin characters (like Hebrew, Japanese, etc.). The following is how your database creation command should look.
Step 5: Configuring the artifact JSON files
- Cartridge JSON
Configure the following parameters in the cartridge JSON file:- Ensure that the
imageId
under theiaasProvider
is the same as the Docker image you created, if you are running Private PaaS on Kubernetes.
- Ensure that the
Update the datasource configurations, i.e DB URLs, username and password, under
properties
.Update datasource configurations for all cartridge JSON files that run on all IaaS, except the Mock IaaS.
- Network Partition JSON
Configuring the network partition is optional. Define the load balancer port IPs underproperty
.
Application JSON
If the application is a single tenant application, ensure to add the artifact repository related details insubscribableInfo
, under theartifactRepository
section, of the application JSON definition.
Example:"artifactRepository":{ "privateRepo":false, "repoUrl":"https://github.com/lakwarus/single-cartridge.git", "repoUsername":"", "repoPassword":"" }
By subscribing to an application you can deploy a custom application artifacts in Private PaaS.
Application Sign Up JSON
Sign up to the application if the application is a multi-tenant application.For more information on application sign up see, signing up to an application.
Step 6: Deploying WSO2 products on Private PaaS
Navigate to the application directory of the preferred WSO2 product.
cd <PRIVATE_PAAS_CARTRIDGES_HOME>/<SERVER_NAME>/<VERSION>/samples/applications/<SERVER_NAME>-<VERSION>-application/scripts/<IAAS>
Example:
cd <PRIVATE_PAAS_CARTRIDGES_HOME>/wso2das/3.0.0/samples/applications/wso2das-300-application/scripts/mock
Deploy the application.
./deploy.sh
What's next?