Skip to content

Commit

Permalink
BE-462 Modify deploy docker to use createdb.sh
Browse files Browse the repository at this point in the history
Docker script updated to reuse createdb.sh script

Change-Id: I73c1177510e9b7122e0f1b399606d2328374d40b
Signed-off-by: Aliaksandr Krasitski <aliaksandr.krasitski@altoros.com>
  • Loading branch information
Aliaksandr Krasitski committed Sep 19, 2018
1 parent c16c0c6 commit bf46e01
Show file tree
Hide file tree
Showing 9 changed files with 488 additions and 191 deletions.
5 changes: 1 addition & 4 deletions Dockerfile
Expand Up @@ -35,9 +35,6 @@ RUN apk add --no-cache --virtual npm-deps python make g++ && \
pip install --upgrade pip setuptools && \
rm -r /root/.cache

# install yarn
RUN npm install -g yarn

# install NPM dependencies
RUN cd $EXPLORER_APP_PATH && npm install && npm build

Expand All @@ -51,4 +48,4 @@ RUN apk del npm-deps
EXPOSE 8080

# run blockchain explorer main app
CMD node $DEFAULT_WORKDIR/explorer/main.js
CMD node $DEFAULT_WORKDIR/explorer/main.js && tail -f /dev/null
13 changes: 13 additions & 0 deletions README.md
Expand Up @@ -272,6 +272,19 @@ From new terminal.
- `cd blockchain-explorer/`
- `./deploy_explorer.sh dockerConfig` (it will automatically deploy both database and frontend apps using Hyperledger Fabric network configuration stored under `examples/dockerConfig` folder)

Note: the example with additional information can be found at [examples/net1](./examples/net1) folder.

### Joining existing Docker network
If the Blockchain network is deployed in the Docker, you may pass network name as second parameter to join that network
(docker_network in the example below):
- `./deploy_explorer.sh dockerConfig docker_network`

### Steps to stop containers
- `./deploy_explorer.sh --down`

### Steps to remove containers and clean images
- `./deploy_explorer.sh --clean`

<a name="Hyperledger-Explorer-Swagger"/>

## Hyperledger Explorer Swagger
Expand Down
20 changes: 14 additions & 6 deletions app/persistence/fabric/postgreSQL/db/createdb.sh
@@ -1,3 +1,7 @@
#!/bin/bash


echo "Copying ENV variables into temp file..."
node processenv.js
if [ $( jq .DATABASE_USERNAME /tmp/process.env.json) == null ]; then
export USER=$( jq .postgreSQL.username ../../../../explorerconfig.json )
Expand All @@ -14,14 +18,18 @@ if [ $(jq .DATABASE_PASSWORD /tmp/process.env.json) == null ]; then
else
export PASSWD=$(jq .DATABASE_PASSWORD /tmp/process.env.json | sed "y/\"/'/")
fi
echo "USER=${USER}"
echo "DATABASE=${DATABASE}"
echo "PASSWD=${PASSWD}"
if [ -f /tmp/process.env.json ] ; then
rm /tmp/process.env.json
fi
case $OSTYPE in
darwin*) psql postgres -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./explorerpg.sql ;
psql postgres -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./updatepg.sql ;;
linux*) sudo -u postgres psql -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./explorerpg.sql ;
sudo -u postgres psql -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./updatepg.sql ;;
esac
echo "Executing SQL scripts..."
case $OSTYPE in
darwin*) psql postgres -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./explorerpg.sql ;
psql postgres -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./updatepg.sql ;;
linux*) sudo -u postgres psql -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./explorerpg.sql ;
sudo -u postgres psql -v dbname=$DATABASE -v user=$USER -v passwd=$PASSWD -f ./updatepg.sql ;;
esac


2 changes: 1 addition & 1 deletion app/persistence/fabric/postgreSQL/db/updatepg.sql
Expand Up @@ -2,4 +2,4 @@
-- SPDX-License-Identifier: Apache-2.0
--

\c fabricexplorer;
\c :dbname;
55 changes: 29 additions & 26 deletions app/persistence/postgreSQL/pgservice.js
Expand Up @@ -20,20 +20,25 @@ var helper = require('../../common/helper');
var logger = helper.getLogger('pgservice');

class pgservice {

constructor(pgconfig) {
this.pgconfig = pgconfig;
this.pgconfig.host = process.env.DATABASE_HOST || pgconfig.host;
this.pgconfig.port = process.env.DATABASE_PORT || pgconfig.port;
this.pgconfig.database = process.env.DATABASE_DATABASE || pgconfig.database;
this.pgconfig.username = process.env.DATABASE_USERNAME || pgconfig.username;
this.pgconfig.passwd = process.env.DATABASE_PASSWD || pgconfig.passwd;

this.connectionString =
'postgres://' +
pgconfig.username +
this.pgconfig.username +
':' +
pgconfig.passwd +
this.pgconfig.passwd +
'@' +
pgconfig.host +
this.pgconfig.host +
':' +
pgconfig.port +
this.pgconfig.port +
'/' +
pgconfig.database;
this.pgconfig.database;

console.log(this.connectionString);

Expand Down Expand Up @@ -81,7 +86,7 @@ class pgservice {

saveRow(tablename, columnValues) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
var addSqlParams = [];
var updatesqlcolumn = [];
var updatesqlflag = [];
Expand Down Expand Up @@ -132,7 +137,7 @@ class pgservice {
*/
updateRowByPk(tablename, columnAndValue, pkName, pkValue) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
var addSqlParams = [];
var updateParms = [];

Expand Down Expand Up @@ -196,7 +201,7 @@ class pgservice {
*/
updateRow(tablename, columnAndValue, condition) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
var addSqlParams = [];
var updateParms = [];

Expand Down Expand Up @@ -244,15 +249,13 @@ class pgservice {
});
}



/**
* excute update or delete sql.
* @param string updateSql the excute sql
*/
updateBySql(updateSql) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
logger.debug(`update sql is : ${updateSql}`);

_self.client.query(updateSql, [], (err, res) => {
Expand Down Expand Up @@ -285,7 +288,7 @@ class pgservice {
*/
getRowByPk(tablename, column, pkColumn, value) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
if (column == '') column = '*';

var sql = ` select ${column} from ${tablename} where ${pkColumn} = ${value} `;
Expand All @@ -312,7 +315,7 @@ class pgservice {
*/
getRowByPkOne(sql) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
//var sql = ` select ${column} from ${tablename} where ${pkColumn} = ${value} `

_self.client.query(sql, (err, res) => {
Expand Down Expand Up @@ -341,7 +344,7 @@ class pgservice {
*/
getRowsByCondition(tablename, column, condtion, orderBy, limit) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
if (column == '') column = '*';

var updatewhereparm = ' (1=1) ';
Expand Down Expand Up @@ -381,7 +384,7 @@ class pgservice {
*/
getRowsBySQl(sqlcharacter, condition, limit) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
var updatewhereparm = ' (1=1) ';
var addSqlParams = [];

Expand Down Expand Up @@ -410,7 +413,7 @@ class pgservice {
}
getRowsBySQlQuery(sql) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
_self.client.query(sql, (err, res) => {
if (err) {
reject(err);
Expand All @@ -434,7 +437,7 @@ class pgservice {
*/
getRowsBySQlNoCondtion(sqlcharacter, limit) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
var sql;
if (limit && sqlcharacter) {
sql = `${sqlcharacter} ${limit}`;
Expand All @@ -458,14 +461,14 @@ class pgservice {
}

/**
* 自动橱窗日志查找/评价历史记录查找
* @param unknown_type sql
* @param unknown_type DB
* @return unknown
*/
* 自动橱窗日志查找/评价历史记录查找
* @param unknown_type sql
* @param unknown_type DB
* @return unknown
*/
getRowsBySQlCase(sql) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
_self.client.query(sql, (err, res) => {
if (err) {
reject(err);
Expand All @@ -488,7 +491,7 @@ class pgservice {
*/
getSQL2Map(sql, key) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
_self.client.query(sql, (err, res) => {
if (err) {
reject(err);
Expand Down Expand Up @@ -517,7 +520,7 @@ class pgservice {
*/
getSQL2Map4Arr(sql, key) {
let _self = this;
return new Promise(function (resolve, reject) {
return new Promise(function(resolve, reject) {
_self.client.query(sql, (err, rows) => {
if (err) {
reject(err);
Expand Down
39 changes: 30 additions & 9 deletions deploy_explorer.sh
Expand Up @@ -69,6 +69,7 @@ function config(){
# Default Hyperledger Explorer Database Credentials.
explorer_db_user="hppoc"
explorer_db_pwd="password"
explorer_db_name="fabricexplorer"
#configure explorer to connect to specific Blockchain network using given configuration
network_config_file=$(pwd)/examples/$fabricBlockchainNetworkName/config.json
#configure explorer to connect to specific Blockchain network using given crypto materials
Expand Down Expand Up @@ -137,8 +138,9 @@ function deploy_run_database(){
-d \
--name $fabric_explorer_db_name \
--net $docker_network_name --ip $db_ip \
-e POSTGRES_PASSWORD=$explorer_db_pwd \
-e PGPASSWORD=$explorer_db_pwd \
-e DATABASE_DATABASE=$explorer_db_name \
-e DATABASE_USERNAME=$explorer_db_user \
-e DATABASE_PASSWORD=$explorer_db_pwd \
$fabric_explorer_db_tag
}

Expand All @@ -156,11 +158,8 @@ function deploy_load_database(){
sleep 1s
echo "Waiting...1s"
sleep 1s
echo "Creating Default user..."
docker exec $fabric_explorer_db_name psql -h localhost -U postgres -c "CREATE USER $explorer_db_user WITH PASSWORD '$explorer_db_pwd'"
echo "Creating default database schemas..."
docker exec $fabric_explorer_db_name psql -h localhost -U postgres -a -f /opt/explorerpg.sql
docker exec $fabric_explorer_db_name psql -h localhost -U postgres -a -f /opt/updatepg.sql
docker exec $fabric_explorer_db_name /bin/bash /opt/createdb.sh
}

function deploy_build_explorer(){
Expand Down Expand Up @@ -195,6 +194,12 @@ function deploy_run_explorer(){
hyperledger-blockchain-explorer
}

function connect_to_network(){
echo "Trying to join to existing network $1"
docker network connect $1 $(docker ps -qf name=^/$fabric_explorer_name$)
docker network connect $1 $(docker ps -qf name=^/$fabric_explorer_db_name$)
}

function deploy(){

deploy_prepare_network
Expand All @@ -209,13 +214,29 @@ function deploy(){
deploy_build_explorer
fi
deploy_run_explorer

if [ -n "$2" ]; then
connect_to_network $2
fi
}

function main(){
banner
#Pass arguments to function exactly as-is
config "$@"
deploy
#Pass arguments to function exactly as-is
config "$@"

MODE=$1;
if [ "$MODE" == "--down" ]; then
echo "Stopping Hyperledger Fabric explorer containers..."
elif [ "$MODE" == "--clean" ]; then
echo "Cleaning Hyperledger Fabric explorer images..."
stop_explorer
stop_database
docker rmi $(docker images -q ${fabric_explorer_db_tag})
docker rmi $(docker images -q ${fabric_explorer_tag})
else
deploy "$@"
fi
}

#Pass arguments to function exactly as-is
Expand Down

0 comments on commit bf46e01

Please sign in to comment.