diff --git a/.gitignore b/.gitignore
index a0d6301..8284b57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*.xpr
secrets/license.xml
mysql-connector-java*.jar
+postgresql-*.jar
diff --git a/Dockerfile-postgres b/Dockerfile-postgres
new file mode 100644
index 0000000..978782c
--- /dev/null
+++ b/Dockerfile-postgres
@@ -0,0 +1,3 @@
+FROM postgres
+
+COPY ./postgres/docker-entrypoint-initdb.d /docker-entrypoint-initdb.d
diff --git a/postgres/docker-entrypoint-initdb.d/postgresql-2018_2.sql b/postgres/docker-entrypoint-initdb.d/postgresql-2018_2.sql
new file mode 100644
index 0000000..95703fe
--- /dev/null
+++ b/postgres/docker-entrypoint-initdb.d/postgresql-2018_2.sql
@@ -0,0 +1,109 @@
+CREATE TABLE orbeon_form_definition (
+ created TIMESTAMP,
+ last_modified_time TIMESTAMP,
+ last_modified_by VARCHAR(255),
+ app VARCHAR(255),
+ form VARCHAR(255),
+ form_version INT NOT NULL,
+ form_metadata VARCHAR(4000),
+ deleted CHARACTER(1) NOT NULL,
+ xml XML
+);
+
+CREATE TABLE orbeon_form_definition_attach (
+ created TIMESTAMP,
+ last_modified_time TIMESTAMP,
+ last_modified_by VARCHAR(255),
+ app VARCHAR(255),
+ form VARCHAR(255),
+ form_version INT NOT NULL,
+ deleted CHARACTER(1) NOT NULL,
+ file_name VARCHAR(255),
+ file_content BYTEA
+);
+
+CREATE TABLE orbeon_form_data (
+ id SERIAL PRIMARY KEY NOT NULL,
+ created TIMESTAMP,
+ last_modified_time TIMESTAMP,
+ last_modified_by VARCHAR(255),
+ username VARCHAR(255),
+ groupname VARCHAR(255),
+ organization_id INT,
+ app VARCHAR(255),
+ form VARCHAR(255),
+ form_version INT NOT NULL,
+ document_id VARCHAR(255),
+ deleted CHARACTER(1) NOT NULL,
+ draft CHARACTER(1) NOT NULL,
+ xml XML
+);
+
+CREATE TABLE orbeon_form_data_attach (
+ created TIMESTAMP,
+ last_modified_time TIMESTAMP,
+ last_modified_by VARCHAR(255),
+ username VARCHAR(255),
+ groupname VARCHAR(255),
+ organization_id INT,
+ app VARCHAR(255),
+ form VARCHAR(255),
+ form_version INT NOT NULL,
+ document_id VARCHAR(255),
+ deleted CHARACTER(1) NOT NULL,
+ draft CHARACTER(1) NOT NULL,
+ file_name VARCHAR(255),
+ file_content BYTEA
+);
+
+CREATE TABLE orbeon_form_data_lease (
+ document_id VARCHAR(255) NOT NULL PRIMARY KEY,
+ username VARCHAR(255) NOT NULL ,
+ groupname VARCHAR(255) ,
+ expiration TIMESTAMP NOT NULL
+);
+
+CREATE TABLE orbeon_organization (
+ id INT NOT NULL,
+ depth INT NOT NULL,
+ pos INT NOT NULL,
+ name VARCHAR(255) NOT NULL
+);
+
+CREATE TABLE orbeon_seq (
+ val SERIAL PRIMARY KEY NOT NULL
+);
+
+CREATE TABLE orbeon_i_current (
+ data_id INT NOT NULL,
+ created TIMESTAMP NOT NULL,
+ last_modified_time TIMESTAMP NOT NULL,
+ last_modified_by VARCHAR(255) ,
+ username VARCHAR(255) ,
+ groupname VARCHAR(255) ,
+ organization_id INT ,
+ app VARCHAR(255) NOT NULL,
+ form VARCHAR(255) NOT NULL,
+ form_version INT NOT NULL,
+ document_id VARCHAR(255) NOT NULL,
+ draft CHARACTER(1) NOT NULL,
+ FOREIGN KEY (data_id) REFERENCES orbeon_form_data(id)
+);
+
+CREATE TABLE orbeon_i_control_text (
+ data_id INT NOT NULL,
+ pos INT NOT NULL,
+ control VARCHAR(255) NOT NULL,
+ val TEXT NOT NULL,
+ FOREIGN KEY (data_id) REFERENCES orbeon_form_data(id)
+);
+
+CREATE INDEX orbeon_form_definition_i1 ON orbeon_form_definition (app, form);
+CREATE INDEX orbeon_form_definition_att_i1 ON orbeon_form_definition_attach (app, form, file_name);
+CREATE INDEX orbeon_from_data_i1 ON orbeon_form_data (app, form, document_id, draft);
+CREATE INDEX orbeon_form_data_i2 ON orbeon_form_data (document_id);
+CREATE INDEX orbeon_from_data_attach_i1 ON orbeon_form_data_attach (app, form, document_id, file_name, draft);
+CREATE INDEX orbeon_from_data_attach_i2 ON orbeon_form_data_attach (document_id);
+CREATE UNIQUE INDEX orbeon_i_current_i1 ON orbeon_i_current (data_id, draft);
+CREATE INDEX orbeon_i_current_i2 ON orbeon_i_current (app, form, draft);
+CREATE INDEX orbeon_i_control_text_i1 ON orbeon_i_control_text (data_id);
diff --git a/postgres/orbeon/README.txt b/postgres/orbeon/README.txt
new file mode 100644
index 0000000..4741a6c
--- /dev/null
+++ b/postgres/orbeon/README.txt
@@ -0,0 +1,2 @@
+Files overriding the default Orbeon directories
+
diff --git a/postgres/orbeon/WEB-INF/resources/config/properties-local.xml b/postgres/orbeon/WEB-INF/resources/config/properties-local.xml
new file mode 100644
index 0000000..42b754b
--- /dev/null
+++ b/postgres/orbeon/WEB-INF/resources/config/properties-local.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/postgres/tomcat/conf/Catalina/localhost/orbeon.xml b/postgres/tomcat/conf/Catalina/localhost/orbeon.xml
new file mode 100644
index 0000000..45423bd
--- /dev/null
+++ b/postgres/tomcat/conf/Catalina/localhost/orbeon.xml
@@ -0,0 +1,17 @@
+
+
+
+