Skip to content

Commit

Permalink
- Updated dockerfile
Browse files Browse the repository at this point in the history
- Modified Rasa UI server to support env variables (can be set from docker)
  • Loading branch information
paschmann committed Mar 12, 2018
1 parent db8682b commit 856dde4
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 35 deletions.
65 changes: 52 additions & 13 deletions Dockerfile
@@ -1,21 +1,60 @@
FROM node:boron
FROM ubuntu:16.04

# Create app directory
WORKDIR /usr/src/app
RUN apt-get update
## Install base environment
RUN apt-get install -y wget python python-pip

# Install app dependencies
COPY package.json package-lock.json ./
## Nodejs
# Prepare
WORKDIR /opt/
# Download
RUN wget https://nodejs.org/dist/v6.11.1/node-v6.11.1-linux-x64.tar.xz
# Unpack
RUN tar xf node-v6.11.1-linux-x64.tar.xz
RUN rm node-v6.11.1-linux-x64.tar.xz
RUN mv node-v6.11.1-linux-x64 node
# Install
WORKDIR /opt/node
RUN mv bin/* /usr/bin/
RUN mv include/* /usr/include/
RUN mv lib/* /usr/lib/
RUN mv share/doc/* /usr/share/doc/
RUN mv share/man/man1/* /usr/share/man/man1/
RUN mv share/systemtap/* /usr/share/systemtap/

## Postgres
# Installation
RUN apt-get install -y postgresql postgresql-contrib

# Configuration
RUN mkdir /opt/pgsql
RUN chown postgres -R /opt/pgsql
WORKDIR /opt/postgresql

ADD resources/dbcreate.sql dbcreate.sql
RUN service postgresql start && su postgres -c "createuser rasaui && echo \"create database rasaui; \c rasaui; \i dbcreate.sql\" | psql && echo \"grant all on database rasaui to rasaui; grant all privileges on all tables in schema public to rasaui; grant all privileges on all sequences in schema public to rasaui \"|psql rasaui" && service postgresql stop

## RasaUI
# Installation
ADD . /opt/rasaui
WORKDIR /opt/rasaui

# Install server packages
RUN npm install

# Bundle app source
COPY . .
# Setup user
RUN useradd rasaui
RUN chown rasaui -R .

#Install webapp dependencies
WORKDIR /usr/src/app/web/src/
RUN cd /usr/src/app/web/src/
# Install web packages
WORKDIR /opt/rasaui/web/src
RUN npm install
WORKDIR /opt/rasaui

# Setup RasaUI configuration
RUN sed -r 's/("postgresConnectionString": )"[^"]*"(.*)/\1"\/var\/run\/postgresql"\2/' -i package.json
ENV rasaserver=http://localhost:5000

WORKDIR /usr/src/app
RUN ls -ltr
EXPOSE 5001
CMD [ "npm", "start" ]

ENTRYPOINT bash -c 'hostname -I; service postgresql start && su rasaui -c "npm start"'
4 changes: 2 additions & 2 deletions package.json
Expand Up @@ -29,7 +29,7 @@
"start": "node server/server.js"
},
"author": "Paul Aschmann",
"url": "http://",
"url": "https://github.com/paschmann/rasa-ui",
"copyright": "Copyright 2017",
"license": "http://"
"license": "https://github.com/paschmann/rasa-ui/blob/master/license"
}
3 changes: 1 addition & 2 deletions server/db/db.js
Expand Up @@ -6,7 +6,6 @@ var options = {
};

var pgp = require('pg-promise')(options);
var connectionString = process.env.npm_package_config_postgresConnectionString;
var db = pgp(connectionString);
var db = pgp(global.postgresserver);

module.exports = db;
20 changes: 10 additions & 10 deletions server/routes/middleware.js
Expand Up @@ -5,8 +5,8 @@ const NodeCache = require( "node-cache" );
const parseLogCache = new NodeCache();

function getRasaNluStatus(req, res, next) {
console.log("Rasa NLU Status Request -> " + process.env.npm_package_config_rasaserver + "/status");
request(process.env.npm_package_config_rasaserver + '/status', function (error, response, body) {
console.log("Rasa NLU Status Request -> " + global.rasaserver + "/status");
request(global.rasaserver + '/status', function (error, response, body) {
try {
if (body !== undefined) {
sendOutput(200, res, body);
Expand All @@ -21,8 +21,8 @@ function getRasaNluStatus(req, res, next) {
}

function getRasaNluConfig(req, res, next) {
console.log("Rasa NLU Config Request -> " + process.env.npm_package_config_rasaserver + "/config");
request(process.env.npm_package_config_rasaserver + '/config', function (error, response, body) {
console.log("Rasa NLU Config Request -> " + global.rasaserver + "/config");
request(global.rasaserver + '/config', function (error, response, body) {
try {
if (body !== undefined) sendOutput(200, res, body);
else sendOutput(404, res, '{"error" : "Server Error"}');
Expand All @@ -34,8 +34,8 @@ function getRasaNluConfig(req, res, next) {
}

function getRasaNluVersion(req, res, next) {
console.log("Rasa NLU Version Request -> " + process.env.npm_package_config_rasaserver + "/version");
request(process.env.npm_package_config_rasaserver + '/version', function (error, response, body) {
console.log("Rasa NLU Version Request -> " + global.rasaserver + "/version");
request(global.rasaserver + '/version', function (error, response, body) {
try {
if (body !== undefined) sendOutput(200, res, body);
else sendOutput(404, res, '{"error" : "Server Error"}');
Expand All @@ -47,12 +47,12 @@ function getRasaNluVersion(req, res, next) {
}

function trainRasaNlu(req, res, next) {
console.log("Rasa NLU Train Request -> " + process.env.npm_package_config_rasaserver + "/train?project=" + req.query.project);
console.log("Rasa NLU Train Request -> " + global.rasaserver + "/train?project=" + req.query.project);
logRequest(req, "train", {project: req.query.project, agent: req.query.name, data: req.body});

request({
method: "POST",
uri: process.env.npm_package_config_rasaserver + "/train?project=" + req.query.project,
uri: global.rasaserver + "/train?project=" + req.query.project,
body: JSON.stringify(req.body)
}, function (error, response, body) {
if(error){
Expand All @@ -77,7 +77,7 @@ function trainRasaNlu(req, res, next) {
}

function parseRasaNlu(req, res, next) {
console.log("Rasa NLU Parse Request -> " + process.env.npm_package_config_rasaserver + "/parse");
console.log("Rasa NLU Parse Request -> " + global.rasaserver + "/parse");
var modelName = req.body.model;
var projectName = req.body.project;
if(modelName == ''){
Expand All @@ -95,7 +95,7 @@ function parseRasaNlu(req, res, next) {
createInitialCacheRequest(req,cache_key);
request({
method: "POST",
uri: process.env.npm_package_config_rasaserver + "/parse",
uri: global.rasaserver + "/parse",
body: JSON.stringify(req.body)
}, function (error, response, body) {
if(error){
Expand Down
37 changes: 29 additions & 8 deletions server/server.js
@@ -1,3 +1,9 @@
// Global Variables
global.postgresserver = process.env.postgresserver || process.env.npm_package_config_postgresConnectionString;
global.rasaserver = process.env.rasaserver || process.env.npm_package_config_rasaserver;
global.rasacoreserver = process.env.rasacoreserver || process.env.npm_package_config_rasacoreserver;
global.jwtsecret = process.env.jwtsecret || process.env.npm_package_config_jwtsecret;

var express = require('express');
var proxy = require('http-proxy-middleware');
var bodyParser = require('body-parser');
Expand Down Expand Up @@ -38,7 +44,7 @@ app.use(function(req, res, next) {
if (req.headers.authorization.split(' ')[0] === 'Bearer'){
var token = req.headers.authorization.split(' ')[1];
// verifies secret and checks exp
jwt.verify(token, process.env.npm_package_config_jwtsecret, function(err, decoded) {
jwt.verify(token, global.jwtsecret, function(err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
Expand Down Expand Up @@ -81,38 +87,53 @@ app.use(function(err, req, res, next) {
});
});

app.listen(5001);
var listener = app.listen(5001);

checkRasaUI();
checkDB();
checkRasaNLU();
//checkRasaCore();

function checkRasaUI() {
console.log('');
console.log('Rasa UI Server: ' + listener.address().address + ':' + listener.address().port);
console.log('');
}

function checkDB() {
db.one('select current_database(), current_schema(), inet_server_port(), inet_server_addr()')
.then(function (data) {
var dbconn = process.env.postgresserver != undefined ? 'process.env.postgresserver' : 'package.json';
console.log('');
console.log('DB Connected');
console.log('Postgres DB Connected');
console.log('Using connection string from: ' + dbconn);
console.log('Postgres Server: ' + data["inet_server_addr"] + ':' + data["inet_server_port"]);
console.log('Database:' + data["current_database"]);
console.log('Schema:' + data["current_schema"]);
console.log('');
})
.catch(function (err) {
console.log('DB Connection Error: ' + err)
var dbconn = process.env.postgresserver != undefined ? 'process.env.postgresserver' : 'package.json';
console.log('Postgres DB Connection Error: ' + err);
console.log('Using connection string from: ' + dbconn);
});
}

function checkRasaNLU() {
request(process.env.npm_package_config_rasaserver + '/config', function (error, response, body) {
request(global.rasaserver + '/config', function (error, response, body) {
try {
if (body !== undefined) {
var rasaconn = process.env.rasaserver != undefined ? 'process.env.rasaserver' : 'package.json';
console.log('');
console.log('Rasa NLU Connected');
console.log('Rasa NLU Server: ' + process.env.npm_package_config_rasaserver);
console.log('Using connection string from: ' + rasaconn);
console.log('Rasa NLU Server: ' + global.rasaserver);
}
if (error !== null) {
var rasaconn = process.env.rasaserver != undefined ? 'process.env.rasaserver' : 'package.json';
console.log('');
console.log('Rasa NLU Error: ' + error);
console.log('Using connection string from: ' + rasaconn);
}
console.log('');
} catch (err) {
Expand All @@ -122,12 +143,12 @@ function checkRasaNLU() {
}

function checkRasaCore() {
request(process.env.npm_package_config_rasacoreendpoint + '/config', function (error, response, body) {
request(global.rasacoreserver + '/config', function (error, response, body) {
try {
if (body !== undefined) {
console.log('');
console.log('Rasa Core Connected');
console.log('Rasa Core Server: ' + process.env.npm_package_config_rasacoreendpoint);
console.log('Rasa Core Server: ' + global.rasacoreserver);
}
if (error !== null) {
console.log('');
Expand Down

0 comments on commit 856dde4

Please sign in to comment.