diff --git a/Dockerfile b/Dockerfile
index e5b2d8cd97f2321d519ce0414c9d3ed02b58100e..25dc0ce2064b10e295307252a10a34931d6b246e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -11,6 +11,7 @@ RUN echo $FAAS_REGISTRY_VERSION > /faas-docker-version
 RUN apt-get -q update  && \
     apt-get install -y  memcached apache2  composer git mc wget && \
     apt-get install -y php-mysql php-curl php-memcached php-apcu php-cli php-bcmath php-xml libapache2-mod-php && \
+    apt-get install -y mariadb-client && \
     apt-get -y autoremove && \
     apt-get -y clean
 
@@ -21,12 +22,13 @@ RUN git clone https://github.com/bcit-ci/CodeIgniter.git /opt/codeigniter && cd
 
 RUN cd /opt/rr3 && bash install.sh && \
     cd /opt/rr3/application/config && \
-    cp config-default.php config.php && \
     cp config_rr-default.php config_rr.php && \
-    cp database-default.php database.php && \
     cp email-default.php email.php && \
     cp memcached-default.php memcached.php
 
+COPY ./conf/etc/registry/config.php /opt/rr3/application/config/config.php
+COPY ./conf/etc/registry/database.php /opt/rr3/application/config/database.php
+
 RUN cp /opt/codeigniter/index.php /opt/rr3/index.php && \
     sed -i 's#$system_path = \x27system\x27;#$system_path = \x27/opt/codeigniter/system\x27;#' /opt/rr3/index.php && \
     cd /opt/rr3/application && \
@@ -34,6 +36,11 @@ RUN cp /opt/codeigniter/index.php /opt/rr3/index.php && \
 
 EXPOSE 80
 
+RUN mkdir -p /docker-entrypoint-initdb.d /var/log/rr3
+RUN chmod 777 /var/log/rr3 /opt/rr3/application/models/Proxies
+
+COPY ./conf/sql/01-init-registry.sql.template /docker-entrypoint-initdb.d
+
 COPY ./conf/etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available
 COPY ./conf/etc/entrypoint /etc/entrypoint
 
diff --git a/Makefile b/Makefile
index 3324a438525da16a6fd06942d10e6f0049cc16e8..f865f4d02e2764dfa652713fe938a59a9b7a3360 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,23 @@
-# import config file
+# import config files
+config_db ?= conf/faas-db.cnf
+include $(config_db)
+export $(shell sed 's/=.*//' $(config_db))
+
+config_smtp ?= conf/faas-smtp.cnf
+include $(config_smtp)
+export $(shell sed 's/=.*//' $(config_smtp))
+
 config ?= conf/faas-registry.cnf
 include $(config)
 export $(shell sed 's/=.*//' $(config))
 
+credentials ?= conf/credentials/faas-registry-default.cnf
+include $(credentials)
+export $(shell sed 's/=.*//' $(credentials))
+
+
+FAAS_REGISTRY_IMAGE="${FAAS_REGISTRY_REPO}/${FAAS_REGISTRY_NAME}:${FAAS_REGISTRY_VERSION}"
+
 
 .DEFAULT_GOAL := help
 
@@ -13,13 +28,19 @@ build-nc: # build container without caching
 	docker build --no-cache -t ${FAAS_REGISTRY_IMAGE} --build-arg FAAS_REGISTRY_NAME=${FAAS_REGISTRY_NAME} --build-arg FAAS_REGISTRY_IMAGE=${FAAS_REGISTRY_IMAGE} --build-arg FAAS_REGISTRY_VERSION=${FAAS_REGISTRY_VERSION} .
 
 run: # run container
-	docker run -i -t --detach --rm --env-file=$(config) -p=${FAAS_REGISTRY_PORT}:80 --name="${FAAS_REGISTRY_NAME}"  ${FAAS_REGISTRY_IMAGE}
+	docker run -i -t --detach --rm --env-file=$(config) --env-file=$(credentials)  -p=${FAAS_REGISTRY_PORT}:80 --name="${FAAS_REGISTRY_NAME}"  ${FAAS_REGISTRY_IMAGE}
 
 run-nd: # run container in no-deamon mode
-	docker run -i -t --rm --env-file=$(config) -p=${FAAS_REGISTRY_PORT}:80 --name="${FAAS_REGISTRY_NAME}" ${FAAS_REGISTRY_IMAGE}
+	docker run -i -t --rm --env-file=$(config) --env-file=$(credentials) -p=${FAAS_REGISTRY_PORT}:80 --name="${FAAS_REGISTRY_NAME}" ${FAAS_REGISTRY_IMAGE}
 
 up: build run # build and run container
 
+compose-up:
+	docker-compose  -f docker-compose.yml up --remove-orphans
+
+compose-down:
+	docker-compose -f docker-compose.yml down
+
 logs: # print docker logs
 	docker logs ${FAAS_REGISTRY_NAME}
 
diff --git a/conf/credentials/.gitkeep b/conf/credentials/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/conf/credentials/faas-registry-default.cnf b/conf/credentials/faas-registry-default.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..4532c170d553316a4ffea5610e7e400690bf2f62
--- /dev/null
+++ b/conf/credentials/faas-registry-default.cnf
@@ -0,0 +1,2 @@
+MYSQL_ROOT_PASSWORD=changeme
+FAAS_REGISTRY_DB_PASSWORD=changeme
diff --git a/conf/etc/entrypoint b/conf/etc/entrypoint
index e55bf3a0e09d6afff8d877014abc82359edc4270..a52ca92b843515612299502fd8149ff3c9854515 100755
--- a/conf/etc/entrypoint
+++ b/conf/etc/entrypoint
@@ -6,6 +6,28 @@ sed -E -i -e 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/7.4/a
 sed -E -i -e 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/7.4/apache2/php.ini
 
 
-sed -i 's#$config\[\x27base_url\x27\]\s=\s\x27\x27#$config\[\x27base_url\x27\] = \x27'${FAAS_REGISTRY_BASE_URL}'\x27#g' /opt/rr3/application/config/config.php
+#sed -i 's#$config\[\x27base_url\x27\]\s=\s\x27\x27#$config\[\x27base_url\x27\] = \x27'${FAAS_REGISTRY_BASE_URL}'\x27#g' /opt/rr3/application/config/config.php
+
+
+sed -i 's#__FAAS_REGISTRY_BASE_URL__#'${FAAS_REGISTRY_BASE_URL}'#g' /opt/rr3/application/config/config.php
+
+sed -i 's#__FAAS_REGISTRY_DB_HOSTNAME__#'${FAAS_REGISTRY_DB_HOSTNAME}'#g' /opt/rr3/application/config/database.php
+sed -i 's#__FAAS_REGISTRY_DB_USERNAME__#'${FAAS_REGISTRY_DB_USERNAME}'#g' /opt/rr3/application/config/database.php
+sed -i 's#__FAAS_REGISTRY_DB_NAME__#'${FAAS_REGISTRY_DB_NAME}'#g' /opt/rr3/application/config/database.php
+sed -i 's#__FAAS_REGISTRY_DB_PASSWORD__#'${FAAS_REGISTRY_DB_PASSWORD}'#g' /opt/rr3/application/config/database.php
+sed -i 's#__FAAS_REGISTRY_DB_PORT__#'${FAAS_REGISTRY_DB_PORT}'#g' /opt/rr3/application/config/database.php
+
+
+sed -i 's#__FAAS_REGISTRY_DB_USERNAME__#'${FAAS_REGISTRY_DB_USERNAME}'#g' /docker-entrypoint-initdb.d/01-init-registry.sql.template
+sed -i 's#__FAAS_REGISTRY_DB_NAME__#'${FAAS_REGISTRY_DB_NAME}'#g' /docker-entrypoint-initdb.d/01-init-registry.sql.template
+sed -i 's#__FAAS_REGISTRY_DB_PASSWORD__#'${FAAS_REGISTRY_DB_PASSWORD}'#g' /docker-entrypoint-initdb.d/01-init-registry.sql.template
+
+
+
+mysql -h ${FAAS_REGISTRY_DB_HOSTNAME} -uroot -p${MYSQL_ROOT_PASSWORD} < /docker-entrypoint-initdb.d/01-init-registry.sql.template
+
+cd /opt/rr3/application
+./doctrine orm:schema-tool:create
+./doctrine orm:generate-proxies
 
 exec supervisord -c /etc/supervisord.conf
diff --git a/conf/etc/registry/config.php b/conf/etc/registry/config.php
new file mode 100644
index 0000000000000000000000000000000000000000..48fec7230211a4041b245e72060bab5e04bef43c
--- /dev/null
+++ b/conf/etc/registry/config.php
@@ -0,0 +1,376 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+
+/*
+|--------------------------------------------------------------------------
+| Base Site URL
+|--------------------------------------------------------------------------
+|
+| URL to your CodeIgniter root. Typically this will be your base URL,
+| WITH a trailing slash:
+|
+|	http://example.com/
+|
+| If this is not set then CodeIgniter will guess the protocol, domain and
+| path to your installation.
+|
+*/
+$config['base_url'] = '__FAAS_REGISTRY_BASE_URL__';
+
+/*
+|--------------------------------------------------------------------------
+| Index File
+|--------------------------------------------------------------------------
+|
+| Typically this will be your index.php file, unless you've renamed it to
+| something else. If you are using mod_rewrite to remove the page set this
+| variable so that it is blank.
+|
+*/
+$config['index_page'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| URI PROTOCOL
+|--------------------------------------------------------------------------
+|
+| This item determines which server global should be used to retrieve the
+| URI string. The default setting of 'AUTO' works for most servers.
+| If your links do not seem to work, try one of the other delicious flavors:
+|
+| 'AUTO'			Default - auto detects
+| 'PATH_INFO'		Uses the PATH_INFO
+| 'QUERY_STRING'	Uses the QUERY_STRING
+| 'REQUEST_URI'		Uses the REQUEST_URI
+| 'ORIG_PATH_INFO'	Uses the ORIG_PATH_INFO
+|
+*/
+$config['uri_protocol']	= 'AUTO';
+
+/*
+|--------------------------------------------------------------------------
+| URL suffix
+|--------------------------------------------------------------------------
+|
+| This option allows you to add a suffix to all URLs generated by CodeIgniter.
+| For more information please see the user guide:
+|
+| http://codeigniter.com/user_guide/general/urls.html
+*/
+
+$config['url_suffix'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| Default Language
+|--------------------------------------------------------------------------
+|
+| This determines which set of language files should be used. Make sure
+| there is an available translation if you intend to use something other
+| than english.
+|
+*/
+$config['language']	= 'english';
+
+/*
+|--------------------------------------------------------------------------
+| Default Character Set
+|--------------------------------------------------------------------------
+|
+| This determines which character set is used by default in various methods
+| that require a character set to be provided.
+|
+*/
+$config['charset'] = 'UTF-8';
+
+/*
+|--------------------------------------------------------------------------
+| Enable/Disable System Hooks
+|--------------------------------------------------------------------------
+|
+| If you would like to use the 'hooks' feature you must enable it by
+| setting this variable to TRUE (boolean). See the user guide for details.
+|
+*/
+$config['enable_hooks'] = FALSE;
+
+
+/*
+|--------------------------------------------------------------------------
+| Class Extension Prefix
+|--------------------------------------------------------------------------
+|
+| This item allows you to set the filename/classname prefix when extending
+| native libraries. For more information please see the user guide:
+|
+| http://codeigniter.com/user_guide/general/core_classes.html
+| http://codeigniter.com/user_guide/general/creating_libraries.html
+|
+*/
+$config['subclass_prefix'] = 'MY_';
+
+
+/*
+|--------------------------------------------------------------------------
+| Allowed URL Characters
+|--------------------------------------------------------------------------
+|
+| This lets you specify with a regular expression which characters are permitted
+| within your URLs. When someone tries to submit a URL with disallowed
+| characters they will get a warning message.
+|
+| As a security measure you are STRONGLY encouraged to restrict URLs to
+| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_-
+|
+| Leave blank to allow all characters -- but only if you are insane.
+|
+| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
+|
+*/
+$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
+
+
+/*
+|--------------------------------------------------------------------------
+| Enable Query Strings
+|--------------------------------------------------------------------------
+|
+| By default CodeIgniter uses search-engine friendly segment based URLs:
+| example.com/who/what/where/
+|
+| By default CodeIgniter enables access to the $_GET array. If for some
+| reason you would like to disable it, set 'allow_get_array' to FALSE.
+|
+| You can optionally enable standard query string based URLs:
+| example.com?who=me&what=something&where=here
+|
+| Options are: TRUE or FALSE (boolean)
+|
+| The other items let you set the query string 'words' that will
+| invoke your controllers and its functions:
+| example.com/index.php?c=controller&m=function
+|
+| Please note that some of the helpers won't work as expected when
+| this feature is enabled, since CodeIgniter is designed primarily to
+| use segment based URLs.
+|
+*/
+$config['allow_get_array']		= TRUE;
+$config['enable_query_strings'] = FALSE;
+$config['controller_trigger']	= 'c';
+$config['function_trigger']		= 'm';
+$config['directory_trigger']	= 'd'; // experimental not currently in use
+
+/*
+|--------------------------------------------------------------------------
+| Error Logging Threshold
+|--------------------------------------------------------------------------
+|
+| If you have enabled error logging, you can set an error threshold to
+| determine what gets logged. Threshold options are:
+| You can enable error logging by setting a threshold over zero. The
+| threshold determines what gets logged. Threshold options are:
+|
+|	0 = Disables logging, Error logging TURNED OFF
+|	1 = Error Messages (including PHP errors)
+|	2 = Debug Messages
+|	3 = Informational Messages
+|	4 = All Messages
+|
+| For a live site you'll usually only enable Errors (1) to be logged otherwise
+| your log files will fill up very fast.
+|
+*/
+$config['log_threshold'] = 4;
+
+/*
+|--------------------------------------------------------------------------
+| Error Logging Directory Path
+|--------------------------------------------------------------------------
+|
+| Leave this BLANK unless you would like to set something other than the default
+| application/logs/ folder. Use a full server path with trailing slash.
+|
+*/
+$config['log_path'] = '/var/log/rr3/';
+
+/*
+|--------------------------------------------------------------------------
+| Date Format for Logs
+|--------------------------------------------------------------------------
+|
+| Each item that is logged has an associated date. You can use PHP date
+| codes to set your own date formatting
+|
+*/
+$config['log_date_format'] = 'Y-m-d H:i:s';
+
+/*
+|--------------------------------------------------------------------------
+| Cache Directory Path
+|--------------------------------------------------------------------------
+|
+| Leave this BLANK unless you would like to set something other than the default
+| system/cache/ folder. Use a full server path with trailing slash.
+|
+*/
+$config['cache_path'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| Encryption Key
+|--------------------------------------------------------------------------
+|
+| If you use the Encryption class or the Session class you
+| MUST set an encryption key. See the user guide for info.
+|
+*/
+$config['encryption_key'] = 'jhiufhi34hfhewhfsdfhsd';
+
+/*
+|--------------------------------------------------------------------------
+| 
+|--------------------------------------------------------------------------
+|
+| 'sess_driver'				= the driver to load: cookie (Classic), native (PHP sessions),
+|	or your custom driver name
+| 'sess_valid_drivers'		= additional valid drivers which may be loaded
+| 'sess_cookie_name'		= the name you want for the cookie
+| 'sess_expiration'			= the number of SECONDS you want the session to last.
+|  by default sessions last 7200 seconds (two hours). Set to zero for no expiration.
+| 'sess_expire_on_close'	= Whether to cause the session to expire automatically
+|  when the browser window is closed
+| 'sess_encrypt_cookie'		= Whether to encrypt the cookie
+| 'sess_use_database'		= Whether to save the session data to a database
+| 'sess_table_name'			= The name of the session database table
+| 'sess_match_ip'			= Whether to match the user's IP address when reading the session data
+| 'sess_match_useragent'	= Whether to match the User Agent when reading the session data
+| 'sess_time_to_update'		= how many seconds between CI refreshing Session Information
+|
+*/
+$config['sess_driver']                  = 'files';
+$config['sess_valid_drivers']   = array();
+$config['sess_cookie_name']		= 'rr3sess';
+$config['sess_expiration']		= 3600;
+$config['sess_expire_on_close']	= TRUE;
+$config['sess_encrypt_cookie']	= TRUE;
+$config['sess_use_database']	= FALSE;
+$config['sess_table_name']		= 'rr3sess';
+$config['sess_match_ip']		= FALSE;
+$config['sess_match_useragent']	= TRUE;
+$config['sess_time_to_update']	= 300;
+
+/*
+|--------------------------------------------------------------------------
+| Cookie Related Variables
+|--------------------------------------------------------------------------
+|
+| 'cookie_prefix' = Set a prefix if you need to avoid collisions
+| 'cookie_domain' = Set to .your-domain.com for site-wide cookies
+| 'cookie_path'  = Typically will be a forward slash
+| 'cookie_secure' = Cookies will only be set if a secure HTTPS connection exists.
+|
+*/
+$config['cookie_prefix']	= "";
+$config['cookie_domain']	= "";
+$config['cookie_path']		= "/";
+$config['cookie_secure']	= TRUE;
+$config['cookie_httponly']      = TRUE;
+
+/*
+|--------------------------------------------------------------------------
+| Global XSS Filtering
+|--------------------------------------------------------------------------
+|
+| Determines whether the XSS filter is always active when GET, POST or
+| COOKIE data is encountered
+|
+*/
+$config['global_xss_filtering'] = FALSE;
+
+/*
+|--------------------------------------------------------------------------
+| Cross Site Request Forgery
+|--------------------------------------------------------------------------
+| Enables a CSRF cookie token to be set. When set to TRUE, token will be
+| checked on a submitted form. If you are accepting user data, it is strongly
+| recommended CSRF protection be enabled.
+|
+| 'csrf_token_name' = The token name
+| 'csrf_cookie_name' = The cookie name
+| 'csrf_expire' = The number in seconds the token should expire.
+*/
+$config['csrf_protection'] = TRUE;
+$config['csrf_token_name'] = 'csrf_rr';
+$config['csrf_cookie_name'] = 'csrf_cookie_rr';
+$config['csrf_expire'] = 3600;
+
+/*
+|--------------------------------------------------------------------------
+| Output Compression
+|--------------------------------------------------------------------------
+|
+| Enables Gzip output compression for faster page loads. When enabled,
+| the output class will test whether your server supports Gzip.
+| Even if it does, however, not all browsers support compression
+| so enable only if you are reasonably sure your visitors can handle it.
+|
+| VERY IMPORTANT: If you are getting a blank page when compression is enabled it
+| means you are prematurely outputting something to your browser. It could
+| even be a line of whitespace at the end of one of your scripts. For
+| compression to work, nothing can be sent before the output buffer is called
+| by the output class. Do not 'echo' any values with compression enabled.
+|
+*/
+$config['compress_output'] = FALSE;
+
+/*
+|--------------------------------------------------------------------------
+| Master Time Reference
+|--------------------------------------------------------------------------
+|
+| Options are 'local' or 'gmt'. This pref tells the system whether to use
+| your server's local time as the master 'now' reference, or convert it to
+| GMT. See the 'date helper' page of the user guide for information
+| regarding date handling.
+|
+*/
+$config['time_reference'] = 'local';
+
+
+/*
+|--------------------------------------------------------------------------
+| Rewrite PHP Short Tags
+|--------------------------------------------------------------------------
+|
+| If your PHP installation does not have short tag support enabled CI
+| can rewrite the tags on-the-fly, enabling you to utilize that syntax
+| in your view files. Options are TRUE or FALSE (boolean)
+|
+*/
+$config['rewrite_short_tags'] = FALSE;
+
+
+/*
+|--------------------------------------------------------------------------
+| Reverse Proxy IPs
+|--------------------------------------------------------------------------
+|
+| If your server is behind a reverse proxy, you must whitelist the proxy IP
+| addresses from which CodeIgniter should trust the HTTP_X_FORWARDED_FOR
+| header in order to properly identify the visitor's IP address.
+| Comma-delimited, e.g. '10.0.1.200,10.0.1.201'
+|
+*/
+$config['proxy_ips'] = '';
+
+$config['standardize_newlines'] = TRUE;
+$config['composer_autoload'] = TRUE;
+
+
+$config['registrationAutority'] = '';
+$config['load_registrationAutority'] = 'TRUE';
+
+
+
+/* End of file config.php */
+/* Location: ./application/config/config.php */
diff --git a/conf/etc/registry/database.php b/conf/etc/registry/database.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9ca0b549aef49b38929875ff5c3c2cda81aefc7
--- /dev/null
+++ b/conf/etc/registry/database.php
@@ -0,0 +1,69 @@
+<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| DATABASE CONNECTIVITY SETTINGS
+| -------------------------------------------------------------------
+| This file will contain the settings needed to access your database.
+|
+| For complete instructions please consult the 'Database Connection'
+| page of the User Guide.
+|
+| -------------------------------------------------------------------
+| EXPLANATION OF VARIABLES
+| -------------------------------------------------------------------
+|
+|	['hostname'] The hostname of your database server.
+|	['username'] The username used to connect to the database
+|	['password'] The password used to connect to the database
+|	['database'] The name of the database you want to connect to
+|	['dbdriver'] The database type. ie: mysql.  Currently supported:
+				 mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
+|	['dbprefix'] You can add an optional prefix, which will be added
+|				 to the table name when using the  Active Record class
+|	['pconnect'] TRUE/FALSE - Whether to use a persistent connection
+|	['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
+|	['cache_on'] TRUE/FALSE - Enables/disables query caching
+|	['cachedir'] The path to the folder where cache files should be stored
+|	['char_set'] The character set used in communicating with the database
+|	['dbcollat'] The character collation used in communicating with the database
+|				 NOTE: For MySQL and MySQLi databases, this setting is only used
+| 				 as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7.
+| 				 There is an incompatibility in PHP with mysql_real_escape_string() which
+| 				 can make your site vulnerable to SQL injection if you are using a
+| 				 multi-byte character set and are running versions lower than these.
+| 				 Sites using Latin-1 or UTF-8 database character set and collation are unaffected.
+|	['swap_pre'] A default table prefix that should be swapped with the dbprefix
+|	['autoinit'] Whether or not to automatically initialize the database.
+|	['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
+|							- good for ensuring strict SQL while developing
+|
+| The $active_group variable lets you choose which connection group to
+| make active.  By default there is only one group (the 'default' group).
+|
+| The $active_record variables lets you determine whether or not to load
+| the active record class
+*/
+
+$active_group = 'default';
+$active_record = TRUE;
+
+$db['default']['hostname'] = '__FAAS_REGISTRY_DB_HOSTNAME__';
+$db['default']['username'] = '__FAAS_REGISTRY_DB_USERNAME__';
+$db['default']['password'] = '__FAAS_REGISTRY_DB_PASSWORD__';
+$db['default']['database'] = '__FAAS_REGISTRY_DB_NAME__';
+$db['default']['dsn']      = 'mysql:host=__FAAS_REGISTRY_DB_HOSTNAME__;port=__FAAS_REGISTRY_DB_PORT__;dbname=__FAAS_REGISTRY_DB_NAME__';
+$db['default']['dbdriver'] = 'pdo';
+$db['default']['dbprefix'] = '';
+$db['default']['pconnect'] = TRUE;
+$db['default']['db_debug'] = TRUE;
+$db['default']['cache_on'] = FALSE;
+$db['default']['cachedir'] = '';
+$db['default']['char_set'] = 'utf8';
+$db['default']['dbcollat'] = 'utf8_general_ci';
+$db['default']['swap_pre'] = '';
+$db['default']['autoinit'] = TRUE;
+$db['default']['stricton'] = FALSE;
+
+
+/* End of file database.php */
+/* Location: ./application/config/database.php */
diff --git a/conf/faas-db.cnf b/conf/faas-db.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..47088201bece812e31250f0ccebca1d575887d0c
--- /dev/null
+++ b/conf/faas-db.cnf
@@ -0,0 +1,6 @@
+FAAS_DB_REPO=faas
+FAAS_DB_VERSION=1.0-SNAPSHOT
+FAAS_DB_NAME=faas-db
+
+FAAS_DB_VOLUME_VAR_LIB_MYSQL=/tmp/faas-db
+FAAS_DB_PORT=9306
diff --git a/conf/faas-registry.cnf b/conf/faas-registry.cnf
index 529e3880a7f90bf61823256a8d6f96ecad6f2284..3a4d588a989ad7d9431b0159ae72f083843ac8cb 100644
--- a/conf/faas-registry.cnf
+++ b/conf/faas-registry.cnf
@@ -1,8 +1,11 @@
 FAAS_REGISTRY_REPO=faas
 FAAS_REGISTRY_NAME=faas-registry
 FAAS_REGISTRY_VERSION=1.0-SNAPSHOT
-FAAS_REGISTRY_IMAGE=${FAAS_REGISTRY_REPO}/${FAAS_REGISTRY_NAME}:${FAAS_REGISTRY_VERSION}
 
 FAAS_REGISTRY_PORT=9080
 FAAS_REGISTRY_BASE_URL=http://localhost:9080/rr3/
 FAAS_REGISTRY_TIMEZONE=Europe/Warsaw
+
+FAAS_REGISTRY_DB_HOSTNAME=faas_db
+FAAS_REGISTRY_DB_USERNAME=rr3_user
+FAAS_REGISTRY_DB_NAME=rr3_db
diff --git a/conf/faas-smtp.cnf b/conf/faas-smtp.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..2a7b155fd7019835550b717680ab761e689ed149
--- /dev/null
+++ b/conf/faas-smtp.cnf
@@ -0,0 +1,12 @@
+FAAS_SMTP_REPO=faas
+FAAS_SMTP_NAME=faas-smtp
+FAAS_SMTP_VERSION=1.0-SNAPSHOT
+
+FAAS_SMTP_MYHOSTNAME=test.faas.geant.net
+FAAS_SMTP_INET_INTERFACES=all
+FAAS_SMTP_INET_PROTOCOLS=all
+
+FAAS_SMTP_PORT=9025
+
+FAAS_SMTP_ROOT_ALIASES_LIST=janny@man.poznan.pl
+FAAS_SMTP_POSTFIX_MYNETWORKS=127.0.0.1/32 192.168.0.0/16 172.16.0.0/12 172.17.0.0/16 10.0.0.0/8
diff --git a/conf/sql/01-init-registry.sql.template b/conf/sql/01-init-registry.sql.template
new file mode 100644
index 0000000000000000000000000000000000000000..47fe6950442b2df5e4fbff3a912418e071bf22ed
--- /dev/null
+++ b/conf/sql/01-init-registry.sql.template
@@ -0,0 +1,4 @@
+CREATE DATABASE IF NOT EXISTS __FAAS_REGISTRY_DB_NAME__ CHARACTER SET utf8 COLLATE utf8_general_ci;
+GRANT ALL ON __FAAS_REGISTRY_DB_NAME__.* to __FAAS_REGISTRY_DB_USERNAME__@'localhost' IDENTIFIED BY '__FAAS_REGISTRY_DB_PASSWORD__';
+GRANT ALL ON __FAAS_REGISTRY_DB_NAME__.* to __FAAS_REGISTRY_DB_USERNAME__@'%' IDENTIFIED BY '__FAAS_REGISTRY_DB_PASSWORD__';
+FLUSH PRIVILEGES;
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..84db1cddf9a295ecb914fa6331d3277b137f42b6
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,42 @@
+version: '3.3'
+
+services:
+    faas_db:
+        image: ${FAAS_DB_REPO}/${FAAS_DB_NAME}:${FAAS_DB_VERSION}
+        volumes:
+           - ${FAAS_DB_VOLUME_VAR_LIB_MYSQL}:/var/lib/mysql
+        restart: always
+        ports:
+            - ${FAAS_DB_PORT}:3306
+        environment:
+            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
+
+    faas_smtp:
+        image: ${FAAS_SMTP_REPO}/${FAAS_SMTP_NAME}:${FAAS_SMTP_VERSION}
+        restart: always
+        ports:
+            - ${FAAS_SMTP_PORT}:25
+        environment:
+            FAAS_SMTP_MYHOSTNAME: ${FAAS_SMTP_MYHOSTNAME}
+            FAAS_SMTP_INET_INTERFACES: ${FAAS_SMTP_INET_INTERFACES}
+            FAAS_SMTP_INET_PROTOCOLS: ${FAAS_SMTP_INET_PROTOCOLS}
+            FAAS_SMTP_ROOT_ALIASES_LIST: "${FAAS_SMTP_ROOT_ALIASES_LIST}"
+            FAAS_SMTP_POSTFIX_MYNETWORKS: "${FAAS_SMTP_POSTFIX_MYNETWORKS}"
+
+    faas_registry:
+         image: ${FAAS_REGISTRY_REPO}/${FAAS_REGISTRY_NAME}:${FAAS_REGISTRY_VERSION}
+         depends_on:
+            - faas_db
+            - faas_smtp
+         ports:
+            - ${FAAS_REGISTRY_PORT}:80
+         restart: always
+         environment:
+            FAAS_REGISTRY_BASE_URL: ${FAAS_REGISTRY_BASE_URL}
+            FAAS_REGISTRY_TIMEZONE: ${FAAS_REGISTRY_TIMEZONE}
+            FAAS_REGISTRY_DB_HOSTNAME: ${FAAS_REGISTRY_DB_HOSTNAME}
+            FAAS_REGISTRY_DB_USERNAME: ${FAAS_REGISTRY_DB_USERNAME}
+            FAAS_REGISTRY_DB_PORT: ${FAAS_DB_PORT}
+            FAAS_REGISTRY_DB_NAME: ${FAAS_REGISTRY_DB_NAME}
+            FAAS_REGISTRY_DB_PASSWORD: ${FAAS_REGISTRY_DB_PASSWORD}
+            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}