You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/03/08 12:20:40 UTC
[syncope] branch 2_1_X updated: [SYNCOPE-1445] docker-compose
working with pgjsonb + using Zulu instead of Debian OpenJDK
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new 585a291 [SYNCOPE-1445] docker-compose working with pgjsonb + using Zulu instead of Debian OpenJDK
585a291 is described below
commit 585a291a0676151313e9b91c90edc16b3086bc70
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Mar 8 13:20:30 2019 +0100
[SYNCOPE-1445] docker-compose working with pgjsonb + using Zulu instead of Debian OpenJDK
---
.../src/main/resources/quartz/tables_postgres.sql | 22 +--
docker/console/src/main/resources/build.sh | 12 +-
docker/core/pom.xml | 1 +
docker/core/src/main/resources/Dockerfile | 7 +-
docker/core/src/main/resources/build.sh | 14 +-
.../{ => domains}/Master.properties.mariadb | 0
.../{ => domains}/Master.properties.mssql | 0
.../{ => domains}/Master.properties.mysql | 0
.../Master.properties.pgjsonb} | 2 +-
.../{ => domains}/Master.properties.postgresql | 0
.../resources/domains/MasterContent.xml.pgjsonb | 183 +++++++++++++++++++++
docker/core/src/main/resources/index.xml.pgjsonb | 63 +++++++
...tence.properties => persistence.properties.all} | 0
...e.properties => persistence.properties.pgjsonb} | 18 +-
.../main/resources/provisioning.properties.pgjsonb | 33 ++++
docker/core/src/main/resources/startup.sh | 31 ++++
docker/core/src/main/resources/views.xml.pgjsonb | 154 +++++++++++++++++
docker/enduser/src/main/resources/build.sh | 12 +-
.../resources/docker-compose/docker-compose-ha.yml | 10 +-
.../docker-compose/docker-compose-mariadb.yml | 6 +-
.../docker-compose/docker-compose-mssql.yml | 6 +-
.../docker-compose/docker-compose-mysql.yml | 6 +-
...e-postgresql.yml => docker-compose-pgjsonb.yml} | 14 +-
.../docker-compose/docker-compose-postgresql.yml | 8 +-
pom.xml | 6 +-
25 files changed, 549 insertions(+), 59 deletions(-)
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql b/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
index 9b7800f..634ade5 100644
--- a/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
+++ b/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
@@ -20,17 +20,17 @@
-- In your Quartz properties file, you'll need to set
-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
-drop table qrtz_fired_triggers;
-DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS;
-DROP TABLE QRTZ_SCHEDULER_STATE;
-DROP TABLE QRTZ_LOCKS;
-drop table qrtz_simple_triggers;
-drop table qrtz_cron_triggers;
-drop table qrtz_simprop_triggers;
-DROP TABLE QRTZ_BLOB_TRIGGERS;
-drop table qrtz_triggers;
-drop table qrtz_job_details;
-drop table qrtz_calendars;
+DROP TABLE IF EXISTS qrtz_fired_triggers;
+DROP TABLE IF EXISTS qrtz_paused_trigger_grps;
+DROP TABLE IF EXISTS qrtz_scheduler_state;
+DROP TABLE IF EXISTS qrtz_locks;
+DROP TABLE IF EXISTS qrtz_simple_triggers;
+DROP TABLE IF EXISTS qrtz_cron_triggers;
+DROP TABLE IF EXISTS qrtz_simprop_triggers;
+DROP TABLE IF EXISTS qrtz_blob_triggers;
+DROP TABLE IF EXISTS qrtz_triggers;
+DROP TABLE IF EXISTS qrtz_job_details;
+DROP TABLE IF EXISTS qrtz_calendars;
CREATE TABLE qrtz_job_details
(
diff --git a/docker/console/src/main/resources/build.sh b/docker/console/src/main/resources/build.sh
index a164395..ca4b39f 100755
--- a/docker/console/src/main/resources/build.sh
+++ b/docker/console/src/main/resources/build.sh
@@ -32,12 +32,20 @@ export DEBCONF_TERSE true
mkdir -p /usr/share/man/man1/
######
+# Additional APT repositories
+######
+apt-get -q update && apt-get -q install -y wget
+
+wget -q -O - http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems | tee /etc/apt/trusted.gpg.d/zulu.asc
+echo 'deb http://repos.azulsystems.com/debian stable main' > /etc/apt/sources.list.d/zulu.list
+
+######
# Install packages
######
apt-get -q update \
&& apt-get -q install -y \
xtail \
- openjdk-8-jdk \
+ zulu-8 \
tomcat8 \
libservlet3.1-java \
&& apt-get clean
@@ -55,4 +63,4 @@ echo "JAVA_OPTS=\"\${JAVA_OPTS} -Dfile.encoding=UTF-8 -server \
-XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC \
-Djava.security.egd=file:/dev/./urandom\"" >> /etc/default/tomcat8
-echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/default/tomcat8
+echo "JAVA_HOME=/usr/lib/jvm/zulu-8-amd64" >> /etc/default/tomcat8
diff --git a/docker/core/pom.xml b/docker/core/pom.xml
index 53eaaaf..a938604 100644
--- a/docker/core/pom.xml
+++ b/docker/core/pom.xml
@@ -92,6 +92,7 @@ under the License.
<copy file="${settings.localRepository}/com/microsoft/sqlserver/mssql-jdbc/${jdbc.mssql.version}8/mssql-jdbc-${jdbc.mssql.version}8.jar" todir="${project.build.directory}/classes" overwrite="true" />
<copy file="${basedir}/../../deb/core/target/apache-syncope-${project.version}.deb" todir="${project.build.directory}/classes" overwrite="true" />
+ <copy file="${basedir}/../../core/persistence-jpa-json/target/syncope-core-persistence-jpa-json-${project.version}.jar" todir="${project.build.directory}/classes" overwrite="true" />
</target>
</configuration>
<goals>
diff --git a/docker/core/src/main/resources/Dockerfile b/docker/core/src/main/resources/Dockerfile
index 656019f..7a80a9d 100644
--- a/docker/core/src/main/resources/Dockerfile
+++ b/docker/core/src/main/resources/Dockerfile
@@ -24,10 +24,9 @@ COPY *.jar /tmp/
COPY *.deb /tmp/
-COPY provisioning.properties.* /etc/apache-syncope/
-COPY views.xml.* /etc/apache-syncope/
-COPY *.properties /etc/apache-syncope/
-COPY Master.properties.* /etc/apache-syncope/domains/
+COPY *.properties* /etc/apache-syncope/
+COPY *.xml* /etc/apache-syncope/
+COPY domains/* /etc/apache-syncope/domains/
COPY build.sh /tmp
RUN chmod 755 /tmp/build.sh && sync && /tmp/build.sh && rm /tmp/build.sh
diff --git a/docker/core/src/main/resources/build.sh b/docker/core/src/main/resources/build.sh
index d311e47..06df0b3 100755
--- a/docker/core/src/main/resources/build.sh
+++ b/docker/core/src/main/resources/build.sh
@@ -32,18 +32,28 @@ export DEBCONF_TERSE true
mkdir -p /usr/share/man/man1/
######
+# Additional APT repositories
+######
+apt-get -q update && apt-get -q install -y wget
+
+wget -q -O - http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems | tee /etc/apt/trusted.gpg.d/zulu.asc
+echo 'deb http://repos.azulsystems.com/debian stable main' > /etc/apt/sources.list.d/zulu.list
+
+######
# Install packages
######
apt-get -q update \
&& apt-get -q install -y \
xtail \
- openjdk-8-jdk \
+ zulu-8 \
tomcat8 \
libservlet3.1-java \
&& apt-get clean
dpkg -i /tmp/*.deb && rm /tmp/*deb
+mv /tmp/syncope-core-persistence-jpa-json-*.jar /etc/apache-syncope
+
######
# Setup Tomcat
######
@@ -57,4 +67,4 @@ echo "JAVA_OPTS=\"\${JAVA_OPTS} -Dfile.encoding=UTF-8 -server \
-XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC \
-Djava.security.egd=file:/dev/./urandom\"" >> /etc/default/tomcat8
-echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/default/tomcat8
+echo "JAVA_HOME=/usr/lib/jvm/zulu-8-amd64" >> /etc/default/tomcat8
diff --git a/docker/core/src/main/resources/Master.properties.mariadb b/docker/core/src/main/resources/domains/Master.properties.mariadb
similarity index 100%
rename from docker/core/src/main/resources/Master.properties.mariadb
rename to docker/core/src/main/resources/domains/Master.properties.mariadb
diff --git a/docker/core/src/main/resources/Master.properties.mssql b/docker/core/src/main/resources/domains/Master.properties.mssql
similarity index 100%
rename from docker/core/src/main/resources/Master.properties.mssql
rename to docker/core/src/main/resources/domains/Master.properties.mssql
diff --git a/docker/core/src/main/resources/Master.properties.mysql b/docker/core/src/main/resources/domains/Master.properties.mysql
similarity index 100%
rename from docker/core/src/main/resources/Master.properties.mysql
rename to docker/core/src/main/resources/domains/Master.properties.mysql
diff --git a/docker/core/src/main/resources/Master.properties.postgresql b/docker/core/src/main/resources/domains/Master.properties.pgjsonb
similarity index 96%
copy from docker/core/src/main/resources/Master.properties.postgresql
copy to docker/core/src/main/resources/domains/Master.properties.pgjsonb
index 74b3471..2f50013 100644
--- a/docker/core/src/main/resources/Master.properties.postgresql
+++ b/docker/core/src/main/resources/domains/Master.properties.pgjsonb
@@ -20,7 +20,7 @@ Master.schema=
Master.username=${DB_USER}
Master.password=${DB_PASSWORD}
Master.databasePlatform=org.apache.openjpa.jdbc.sql.PostgresDictionary
-Master.orm=META-INF/spring-orm.xml
+Master.orm=META-INF/spring-orm-pgjsonb.xml
Master.pool.maxActive=${DB_POOL_MAX}
Master.pool.minIdle=${DB_POOL_MIN}
diff --git a/docker/core/src/main/resources/Master.properties.postgresql b/docker/core/src/main/resources/domains/Master.properties.postgresql
similarity index 100%
rename from docker/core/src/main/resources/Master.properties.postgresql
rename to docker/core/src/main/resources/domains/Master.properties.postgresql
diff --git a/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb b/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb
new file mode 100644
index 0000000..814b3c6
--- /dev/null
+++ b/docker/core/src/main/resources/domains/MasterContent.xml.pgjsonb
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<dataset>
+ <Realm id="ea696a4f-e77a-4ef1-be67-8f8093bc8686" name="/"/>
+
+ <SyncopeSchema id="password.cipher.algorithm"/>
+ <PlainSchema id="password.cipher.algorithm" type="String"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <!-- notificationjob.cronExpression:
+ + not existing: NotificationJob runs according to NotificationJob.DEFAULT_CRON_EXP
+ + provided as empty string: NotificationJob disabled
+ + provided as non-empty string: NotificationJob runs according to the given value -->
+ <SyncopeSchema id="notificationjob.cronExpression"/>
+ <PlainSchema id="notificationjob.cronExpression" type="String"
+ mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="notification.maxRetries"/>
+ <PlainSchema id="notification.maxRetries" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="token.length"/>
+ <PlainSchema id="token.length" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="token.expireTime"/>
+ <PlainSchema id="token.expireTime" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="selfRegistration.allowed"/>
+ <PlainSchema id="selfRegistration.allowed" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="passwordReset.allowed"/>
+ <PlainSchema id="passwordReset.allowed" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="passwordReset.securityQuestion"/>
+ <PlainSchema id="passwordReset.securityQuestion" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="authentication.attributes"/>
+ <PlainSchema id="authentication.attributes" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="authentication.statuses"/>
+ <PlainSchema id="authentication.statuses" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+
+ <!-- Save user login date upon successful authentication -->
+ <SyncopeSchema id="log.lastlogindate"/>
+ <PlainSchema id="log.lastlogindate" type="Boolean"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <!-- Return hashed password values when reading users -->
+ <SyncopeSchema id="return.password.value"/>
+ <PlainSchema id="return.password.value" type="Boolean"
+ mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <!-- JWT lifetime in minutes -->
+ <SyncopeSchema id="jwt.lifetime.minutes"/>
+ <PlainSchema id="jwt.lifetime.minutes" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <!-- Connector and Resource configuration history -->
+ <SyncopeSchema id="connector.conf.history.size"/>
+ <PlainSchema id="connector.conf.history.size" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeSchema id="resource.conf.history.size"/>
+ <PlainSchema id="resource.conf.history.size" type="Long"
+ mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+
+ <SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"
+ plainAttrs="[{"values":[{"stringValue":"SSHA256"}],"schema":"password.cipher.algorithm"},{"values":[{"stringValue":""}],"schema":"notificationjob.cronExpression"},{"values":[{"longValue":3}],"schema":"notification.maxRetries"},{"values":[{"longValue":256}],"schema":"token.length"},{"values&q [...]
+
+ <AnyType id="USER" kind="USER"/>
+ <AnyTypeClass id="BaseUser"/>
+ <AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="BaseUser"/>
+
+ <AnyType id="GROUP" kind="GROUP"/>
+ <AnyTypeClass id="BaseGroup"/>
+ <AnyType_AnyTypeClass anyType_id="GROUP" anyTypeClass_id="BaseGroup"/>
+
+ <!-- Actual plain schemas -->
+ <Implementation id="EmailAddressValidator" type="VALIDATOR" engine="JAVA"
+ body="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
+ <SyncopeSchema id="email"/>
+ <PlainSchema id="email" type="String" anyTypeClass_id="BaseUser"
+ mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
+ validator_id="EmailAddressValidator"/>
+
+ <Implementation id="BinaryValidator" type="VALIDATOR" engine="JAVA"
+ body="org.apache.syncope.core.persistence.jpa.attrvalue.validation.BinaryValidator"/>
+
+ <Implementation id="PullJobDelegate" type="TASKJOB_DELEGATE" engine="JAVA"
+ body="org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate"/>
+ <Implementation id="PushJobDelegate" type="TASKJOB_DELEGATE" engine="JAVA"
+ body="org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate"/>
+
+
+ <Implementation id="ExpiredAccessTokenCleanup" type="TASKJOB_DELEGATE" engine="JAVA"
+ body="org.apache.syncope.core.provisioning.java.job.ExpiredAccessTokenCleanup"/>
+ <Task DTYPE="SchedTask" id="89de5014-e3f5-4462-84d8-d97575740baf" name="Access Token Cleanup Task" active="1"
+ jobDelegate_id="ExpiredAccessTokenCleanup" cronExpression="0 0/5 * * * ?"/>
+ <Implementation id="ExpiredBatchCleanup" type="TASKJOB_DELEGATE" engine="JAVA"
+ body="org.apache.syncope.core.provisioning.java.job.ExpiredBatchCleanup"/>
+ <Task DTYPE="SchedTask" id="8ea0ea51-ce08-4fe3-a0c8-c281b31b5893" name="Expired Batch Operations Cleanup Task" active="1"
+ jobDelegate_id="ExpiredBatchCleanup" cronExpression="0 0/5 * * * ?"/>
+
+ <!-- Password reset notifications -->
+ <MailTemplate id="requestPasswordReset"
+ textTemplate="Hi,
+a password reset was request for ${user.getUsername()}.
+
+In order to complete this request, you need to visit this link:
+
+http://localhost:9080/syncope-enduser/app/#!/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}
+
+If you did not request this reset, just ignore the present e-mail.
+
+Best regards."
+ htmlTemplate="<html>
+<body>
+<p>Hi,
+a password reset was request for ${user.getUsername()}.</p>
+
+<p>In order to complete this request, you need to visit this
+<a href="http://localhost:9080/syncope-enduser/app/#!/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>.
+
+<p>If you did not request this reset, just ignore the present e-mail.</p>
+
+<p>Best regards.</p>
+</body>
+</html>"/>
+ <MailTemplate id="confirmPasswordReset"
+ textTemplate="Hi,
+we are happy to inform you that the password request was successfully executed for your account.
+
+Best regards."
+ htmlTemplate="<html>
+<body>
+<p>Hi,</br>
+we are happy to inform you that the password request was successfully executed for your account.</p>
+
+<p>Best regards.</p>
+</body>
+</html>"/>
+
+ <Notification id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" active="1" recipientAttrName="email" selfAsRecipient="1"
+ sender="admin@syncope.apache.org" subject="Password Reset request" template_id="requestPasswordReset"
+ traceLevel="FAILURES"/>
+ <AnyAbout id="a328f2e6-25e9-4cc1-badf-7425d7be4b39" anyType_id="USER" notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" filter="token!=$null"/>
+ <Notification_events notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
+
+ <Notification id="bef0c250-e8a7-4848-bb63-2564fc409ce2" active="1" recipientAttrName="email" selfAsRecipient="1"
+ sender="admin@syncope.apache.org" subject="Password Reset successful" template_id="confirmPasswordReset"
+ traceLevel="FAILURES"/>
+ <Notification_events notification_id="bef0c250-e8a7-4848-bb63-2564fc409ce2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+
+ <ReportTemplate id="empty"/>
+
+ <Report id="c3520ad9-179f-49e7-b315-d684d216dd97" name="reconciliation" active="1" template_id="empty"/>
+ <Implementation id="ReconciliationReportletConf" type="REPORTLET" engine="JAVA"
+ body='{"@class":"org.apache.syncope.common.lib.report.ReconciliationReportletConf","name":"dashboardReconciliationReportlet","userMatchingCond":null,"groupMatchingCond":null,"anyObjectMatchingCond":null,"features":["key","username","groupName"]}'/>
+ <ReportReportlet report_id="c3520ad9-179f-49e7-b315-d684d216dd97" implementation_id="ReconciliationReportletConf"/>
+
+</dataset>
diff --git a/docker/core/src/main/resources/index.xml.pgjsonb b/docker/core/src/main/resources/index.xml.pgjsonb
new file mode 100644
index 0000000..3e5b92b
--- /dev/null
+++ b/docker/core/src/main/resources/index.xml.pgjsonb
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+ <comment>Additional indexes (in respect to JPA's)</comment>
+
+ <entry key="SyncopeUser_plainAttrs_idx">CREATE INDEX SyncopeUser_plainAttrs_idx ON SyncopeUser USING gin ((plainAttrs) jsonb_path_ops)</entry>
+ <entry key="SyncopeGroup_plainAttrs_idx">CREATE INDEX SyncopeGroup_plainAttrs_idx ON SyncopeGroup USING gin ((plainAttrs) jsonb_path_ops)</entry>
+ <entry key="AnyObject_plainAttrs_idx">CREATE INDEX AnyObject_plainAttrs_idx ON AnyObject USING gin ((plainAttrs) jsonb_path_ops)</entry>
+ <entry key="SyncopeConf_plainAttrs_idx">CREATE INDEX SyncopeConf_plainAttrs_idx ON SyncopeConf USING gin ((plainAttrs) jsonb_path_ops)</entry>
+
+ <entry key="UDynGroupMembers_any_id">CREATE INDEX UDynGroupMembers_any_id ON UDynGroupMembers(any_id)</entry>
+ <entry key="UDynGroupMembers_group_id">CREATE INDEX UDynGroupMembers_group_id ON UDynGroupMembers(group_id)</entry>
+ <entry key="ADynGroupMembers_any_id">CREATE INDEX ADynGroupMembers_any_id ON ADynGroupMembers(any_id)</entry>
+ <entry key="ADynGroupMembers_group_id">CREATE INDEX ADynGroupMembers_group_id ON ADynGroupMembers(group_id)</entry>
+
+ <entry key="DynRoleMembers_any_id">CREATE INDEX DynRoleMembers_any_id ON DynRoleMembers(any_id)</entry>
+ <entry key="DynRoleMembers_role_id">CREATE INDEX DynRoleMembers_role_id ON DynRoleMembers(role_id)</entry>
+
+ <entry key="DynRealmMembers_any_id">CREATE INDEX DynRealmMembers_any_id ON DynRealmMembers(any_id)</entry>
+ <entry key="DynRealmMembers_realm_id">CREATE INDEX DynRealmMembers_dynRealm_id ON DynRealmMembers(dynRealm_id)</entry>
+
+ <entry key="CPlainAttrValue_stringvalueIndex">CREATE INDEX CAttrValue_stringvalueIndex ON CPlainAttrValue(stringvalue)</entry>
+ <entry key="CPlainAttrValue_datevalueIndex">CREATE INDEX CAttrValue_datevalueIndex ON CPlainAttrValue(datevalue)</entry>
+ <entry key="CPlainAttrValue_longvalueIndex">CREATE INDEX CAttrValue_longvalueIndex ON CPlainAttrValue(longvalue)</entry>
+ <entry key="CPlainAttrValue_doublevalueIndex">CREATE INDEX CAttrValue_doublevalueIndex ON CPlainAttrValue(doublevalue)</entry>
+ <entry key="CPlainAttrValue_booleanvalueIndex">CREATE INDEX CAttrValue_booleanvalueIndex ON CPlainAttrValue(booleanvalue)</entry>
+
+ <entry key="UMembership_GroupIndex">CREATE INDEX UMembership_GroupIndex ON UMembership(group_id)</entry>
+ <entry key="UMembership_UserIndex">CREATE INDEX UMembership_UserIndex ON UMembership(user_id)</entry>
+ <entry key="AMembership_GroupIndex">CREATE INDEX AMembership_GroupIndex ON AMembership(group_id)</entry>
+ <entry key="AMembership_AnyObjectIndex">CREATE INDEX AMembership_AnyObjectIndex ON AMembership(anyObject_id)</entry>
+
+ <entry key="URelationship_RightIndex">CREATE INDEX URelationship_RightIndex ON URelationship(anyObject_id)</entry>
+ <entry key="URelationship_LeftIndex">CREATE INDEX URelationship_LeftIndex ON URelationship(user_id)</entry>
+ <entry key="ARelationship_RightIndex">CREATE INDEX ARelationship_RightIndex ON ARelationship(right_anyObject_id)</entry>
+ <entry key="ARelationship_AnyObjectIndex">CREATE INDEX ARelationship_AnyObjectIndex ON ARelationship(left_anyObject_id)</entry>
+
+ <entry key="CPlainAttrValue_attrIndex">CREATE INDEX CPlainAttrValue_attrIndex on CPlainAttrValue(attribute_id)</entry>
+ <entry key="CPAttrUniqueValue_attrIndex">CREATE INDEX CPAttrUniqueValue_attrIndex on CPlainAttrUniqueValue(attribute_id)</entry>
+
+ <entry key="CPlainAttr_owner_Index">CREATE INDEX CPlainAttr_owner_Index on CPlainAttr(owner_id)</entry>
+ <entry key="CPlainAttr_schema_Index">CREATE INDEX CPlainAttr_schema_Index on CPlainAttr(schema_id)</entry>
+
+ <entry key="Task_executedIndex">CREATE INDEX Task_executedIndex ON Task(executed)</entry>
+</properties>
diff --git a/docker/core/src/main/resources/persistence.properties b/docker/core/src/main/resources/persistence.properties.all
similarity index 100%
copy from docker/core/src/main/resources/persistence.properties
copy to docker/core/src/main/resources/persistence.properties.all
diff --git a/docker/core/src/main/resources/persistence.properties b/docker/core/src/main/resources/persistence.properties.pgjsonb
similarity index 59%
rename from docker/core/src/main/resources/persistence.properties
rename to docker/core/src/main/resources/persistence.properties.pgjsonb
index b4e2c81..6da6788 100644
--- a/docker/core/src/main/resources/persistence.properties
+++ b/docker/core/src/main/resources/persistence.properties.pgjsonb
@@ -15,13 +15,13 @@
# specific language governing permissions and limitations
# under the License.
content.directory=/etc/apache-syncope
-entity.factory=org.apache.syncope.core.persistence.jpa.entity.JPAEntityFactory
-plainSchema.dao=org.apache.syncope.core.persistence.jpa.dao.JPAPlainSchemaDAO
-plainAttr.dao=org.apache.syncope.core.persistence.jpa.dao.JPAPlainAttrDAO
-plainAttrValue.dao=org.apache.syncope.core.persistence.jpa.dao.JPAPlainAttrValueDAO
-any.search.dao=org.apache.syncope.core.persistence.jpa.dao.JPAAnySearchDAO
-user.dao=org.apache.syncope.core.persistence.jpa.dao.JPAUserDAO
-group.dao=org.apache.syncope.core.persistence.jpa.dao.JPAGroupDAO
-anyObject.dao=org.apache.syncope.core.persistence.jpa.dao.JPAAnyObjectDAO
-conf.dao=org.apache.syncope.core.persistence.jpa.dao.JPAConfDAO
+entity.factory=org.apache.syncope.core.persistence.jpa.entity.PGJPAJSONEntityFactory
+plainSchema.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONPlainSchemaDAO
+plainAttr.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONPlainAttrDAO
+plainAttrValue.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONPlainAttrValueDAO
+any.search.dao=org.apache.syncope.core.persistence.jpa.dao.PGJPAJSONAnySearchDAO
+user.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONUserDAO
+group.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONGroupDAO
+anyObject.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONAnyObjectDAO
+conf.dao=org.apache.syncope.core.persistence.jpa.dao.JPAJSONConfDAO
openjpa.RemoteCommitProvider=${OPENJPA_REMOTE_COMMIT}
diff --git a/docker/core/src/main/resources/provisioning.properties.pgjsonb b/docker/core/src/main/resources/provisioning.properties.pgjsonb
new file mode 100644
index 0000000..220105e
--- /dev/null
+++ b/docker/core/src/main/resources/provisioning.properties.pgjsonb
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+asyncConnectorFacadeExecutor.poolSize=10
+
+# see http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-namespace-executor
+propagationTaskExecutorAsyncExecutor.poolSize=5-25
+propagationTaskExecutorAsyncExecutor.queueCapacity=100
+propagationTaskExecutor=org.apache.syncope.core.provisioning.java.propagation.PriorityPropagationTaskExecutor
+
+userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserProvisioningManager
+groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
+anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
+virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManager
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManager
+
+quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
+quartz.sql=tables_postgres.sql
+quartz.disableInstance=false
diff --git a/docker/core/src/main/resources/startup.sh b/docker/core/src/main/resources/startup.sh
index 8c11ad9..52617e6 100755
--- a/docker/core/src/main/resources/startup.sh
+++ b/docker/core/src/main/resources/startup.sh
@@ -18,15 +18,46 @@
# under the License.
cd /etc/apache-syncope
+
rm -f provisioning.properties
ln -s provisioning.properties.$DBMS provisioning.properties
+
+rm -f persistence.properties
+if [ $DBMS = "pgjsonb" ]; then
+ ln -s persistence.properties.pgjsonb persistence.properties
+else
+ ln -s persistence.properties.all persistence.properties
+fi
+
rm -f views.xml
ln -s views.xml.$DBMS views.xml
+if [ $DBMS = "pgjsonb" ]; then
+ ln -s indexes.xml.pgjsonb indexes.xml
+else
+ rm -f indexes.xml
+fi
+
cd domains
+
+if [ $DBMS = "pgjsonb" ]; then
+ mv MasterContent.xml MasterContent.xml.all
+ ln -s MasterContent.xml.pgjsonb MasterContent.xml
+else
+ rm -f MasterContent.xml
+ mv MasterContent.xml.all MasterContent.xml
+fi
+
rm -f Master.properties
ln -s Master.properties.$DBMS Master.properties
+if [ $DBMS = "pgjsonb" ]; then
+ mkdir -p /tmp/WEB-INF/lib
+ cp /etc/apache-syncope/syncope-core-persistence-jpa-json-*.jar /tmp/WEB-INF/lib
+ cd /tmp
+ jar uvf /usr/share/apache-syncope/syncope-deb-core-*.war WEB-INF/lib/
+fi
+
/etc/init.d/tomcat8 start
xtail /var/log/apache-syncope/*.log /var/log/tomcat8/
diff --git a/docker/core/src/main/resources/views.xml.pgjsonb b/docker/core/src/main/resources/views.xml.pgjsonb
new file mode 100644
index 0000000..eb450be
--- /dev/null
+++ b/docker/core/src/main/resources/views.xml.pgjsonb
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+
+ <entry key="UDynGroupMembers">
+ CREATE TABLE UDynGroupMembers(
+ any_id CHAR(36),
+ group_id CHAR(36),
+ UNIQUE(any_id, group_id))
+ </entry>
+ <entry key="ADynGroupMembers">
+ CREATE TABLE ADynGroupMembers(
+ anyType_id VARCHAR(255),
+ any_id CHAR(36),
+ group_id CHAR(36),
+ UNIQUE(anyType_id, any_id, group_id))
+ </entry>
+ <entry key="DynRoleMembers">
+ CREATE TABLE DynRoleMembers(
+ any_id CHAR(36),
+ role_id VARCHAR(255),
+ UNIQUE(any_id, role_id))
+ </entry>
+ <entry key="DynRealmMembers">
+ CREATE TABLE DynRealmMembers(
+ any_id CHAR(36),
+ dynRealm_id VARCHAR(255),
+ UNIQUE(any_id, dynRealm_id))
+ </entry>
+
+ <!-- user -->
+ <entry key="user_search">
+ CREATE VIEW user_search AS
+
+ SELECT u.id as any_id, u.*,attrs,attrValues
+ FROM SyncopeUser u, jsonb_array_elements(COALESCE(u.plainAttrs, '[{}]'::jsonb)) attrs,
+ jsonb_array_elements(COALESCE(attrs -> 'values', '[{}]'::jsonb)) attrValues
+ </entry>
+ <entry key="user_search_urelationship">
+ CREATE VIEW user_search_urelationship AS
+
+ SELECT m.user_id AS any_id, m.anyObject_id AS right_any_id, m.type_id AS type
+ FROM URelationship m
+ </entry>
+ <entry key="user_search_umembership">
+ CREATE VIEW user_search_umembership AS
+
+ SELECT m.user_id AS any_id, g.id AS group_id, g.name AS group_name
+ FROM UMembership m, SyncopeGroup g
+ WHERE m.group_id = g.id
+ </entry>
+ <entry key="user_search_role">
+ CREATE VIEW user_search_role AS
+
+ SELECT ss.user_id AS any_id, ss.role_id AS role_id
+ FROM SyncopeUser_SyncopeRole ss
+ </entry>
+ <entry key="user_search_priv">
+ CREATE VIEW user_search_priv AS
+
+ SELECT ss.user_id AS any_id, sp.privilege_id AS privilege_id
+ FROM SyncopeUser_SyncopeRole ss, SyncopeRole_Privilege sp
+ WHERE ss.role_id = sp.role_id
+ </entry>
+ <entry key="user_search_dynpriv">
+ CREATE VIEW user_search_dynpriv AS
+
+ SELECT any_id, privilege_id
+ FROM DynRoleMembers drm, SyncopeRole_Privilege rp
+ WHERE drm.role_id = rp.role_id
+ </entry>
+ <entry key="user_search_resource">
+ CREATE VIEW user_search_resource AS
+
+ SELECT st.user_id AS any_id, st.resource_id AS resource_id
+ FROM SyncopeUser_ExternalResource st
+ </entry>
+ <entry key="user_search_group_res">
+ CREATE VIEW user_search_group_res AS
+
+ SELECT m.user_id AS any_id, st.resource_id AS resource_id
+ FROM UMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
+ WHERE m.group_id = r.id AND st.group_id = r.id
+ </entry>
+
+ <!-- anyObject -->
+ <entry key="anyObject_search">
+ CREATE VIEW anyObject_search AS
+
+ SELECT a.id as any_id, a.*,attrs,attrValues
+ FROM AnyObject a, jsonb_array_elements(COALESCE(a.plainAttrs, '[{}]'::jsonb)) attrs,
+ jsonb_array_elements(COALESCE(attrs -> 'values', '[{}]'::jsonb)) attrValues
+ </entry>
+ <entry key="anyObject_search_arelationship">
+ CREATE VIEW anyObject_search_arelationship AS
+
+ SELECT m.left_anyObject_id AS any_id, m.right_anyObject_id AS right_any_id, m.type_id AS type
+ FROM ARelationship m
+ </entry>
+ <entry key="anyObject_search_amembership">
+ CREATE VIEW anyObject_search_amembership AS
+
+ SELECT m.anyObject_id AS any_id, g.id AS group_id, g.name AS group_name
+ FROM AMembership m, SyncopeGroup g
+ WHERE m.group_id = g.id
+ </entry>
+ <entry key="anyObject_search_resource">
+ CREATE VIEW anyObject_search_resource AS
+
+ SELECT st.anyObject_id AS any_id, st.resource_id AS resource_id
+ FROM AnyObject_ExternalResource st
+ </entry>
+ <entry key="anyObject_search_group_res">
+ CREATE VIEW anyObject_search_group_res AS
+
+ SELECT m.anyObject_id AS any_id, st.resource_id AS resource_id
+ FROM AMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
+ WHERE m.group_id = r.id AND st.group_id = r.id
+ </entry>
+
+ <!-- group -->
+ <entry key="group_search">
+ CREATE VIEW group_search AS
+
+ SELECT g.id as any_id, g.*,attrs,attrValues
+ FROM SyncopeGroup g, jsonb_array_elements(COALESCE(g.plainAttrs, '[{}]'::jsonb)) attrs,
+ jsonb_array_elements(COALESCE(attrs -> 'values', '[{}]'::jsonb)) attrValues
+ </entry>
+ <entry key="group_search_resource">
+ CREATE VIEW group_search_resource AS
+
+ SELECT st.group_id AS any_id, st.resource_id AS resource_id
+ FROM SyncopeGroup_ExternalResource st
+ </entry>
+
+</properties>
diff --git a/docker/enduser/src/main/resources/build.sh b/docker/enduser/src/main/resources/build.sh
index a164395..ca4b39f 100755
--- a/docker/enduser/src/main/resources/build.sh
+++ b/docker/enduser/src/main/resources/build.sh
@@ -32,12 +32,20 @@ export DEBCONF_TERSE true
mkdir -p /usr/share/man/man1/
######
+# Additional APT repositories
+######
+apt-get -q update && apt-get -q install -y wget
+
+wget -q -O - http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems | tee /etc/apt/trusted.gpg.d/zulu.asc
+echo 'deb http://repos.azulsystems.com/debian stable main' > /etc/apt/sources.list.d/zulu.list
+
+######
# Install packages
######
apt-get -q update \
&& apt-get -q install -y \
xtail \
- openjdk-8-jdk \
+ zulu-8 \
tomcat8 \
libservlet3.1-java \
&& apt-get clean
@@ -55,4 +63,4 @@ echo "JAVA_OPTS=\"\${JAVA_OPTS} -Dfile.encoding=UTF-8 -server \
-XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC \
-Djava.security.egd=file:/dev/./urandom\"" >> /etc/default/tomcat8
-echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/default/tomcat8
+echo "JAVA_HOME=/usr/lib/jvm/zulu-8-amd64" >> /etc/default/tomcat8
diff --git a/docker/src/main/resources/docker-compose/docker-compose-ha.yml b/docker/src/main/resources/docker-compose/docker-compose-ha.yml
index 8f9aa0c..c5857ba 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-ha.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-ha.yml
@@ -22,7 +22,7 @@ version: '3.3'
services:
db:
- image: postgres:latest
+ image: postgres:11.2
restart: always
environment:
POSTGRES_DB: syncope
@@ -32,7 +32,7 @@ services:
syncope1:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
@@ -48,7 +48,7 @@ services:
syncope2:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18081:8080"
restart: always
@@ -64,7 +64,7 @@ services:
syncope-console:
depends_on:
- syncope1
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -76,7 +76,7 @@ services:
syncope-enduser:
depends_on:
- syncope1
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml b/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
index 3f15b25..e39ff8b 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
@@ -32,7 +32,7 @@ services:
syncope:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
@@ -48,7 +48,7 @@ services:
syncope-console:
depends_on:
- syncope
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -60,7 +60,7 @@ services:
syncope-enduser:
depends_on:
- syncope
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/docker/src/main/resources/docker-compose/docker-compose-mssql.yml b/docker/src/main/resources/docker-compose/docker-compose-mssql.yml
index 462f749..32a9300 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-mssql.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-mssql.yml
@@ -33,7 +33,7 @@ services:
syncope:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
@@ -50,7 +50,7 @@ services:
syncope-console:
depends_on:
- syncope
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -62,7 +62,7 @@ services:
syncope-enduser:
depends_on:
- syncope
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/docker/src/main/resources/docker-compose/docker-compose-mysql.yml b/docker/src/main/resources/docker-compose/docker-compose-mysql.yml
index d2af8c0..c7ecd2b 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-mysql.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-mysql.yml
@@ -31,7 +31,7 @@ services:
syncope:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
@@ -47,7 +47,7 @@ services:
syncope-console:
depends_on:
- syncope
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -59,7 +59,7 @@ services:
syncope-enduser:
depends_on:
- syncope
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml b/docker/src/main/resources/docker-compose/docker-compose-pgjsonb.yml
similarity index 82%
copy from docker/src/main/resources/docker-compose/docker-compose-postgresql.yml
copy to docker/src/main/resources/docker-compose/docker-compose-pgjsonb.yml
index 5e36ec0..8af76b7 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-pgjsonb.yml
@@ -15,13 +15,13 @@
# specific language governing permissions and limitations
# under the License.
-# Full deployment (Core, Console, Enduser) on PostgreSQL
+# Full deployment (Core, Console, Enduser) on PostgreSQL with JSONB support
version: '3.3'
services:
db:
- image: postgres:11.1
+ image: postgres:11.2
restart: always
environment:
POSTGRES_DB: syncope
@@ -31,13 +31,13 @@ services:
syncope:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
environment:
- DBMS: postgresql
- DB_URL: jdbc:postgresql://db:5432/syncope
+ DBMS: pgjsonb
+ DB_URL: jdbc:postgresql://db:5432/syncope?stringtype=unspecified
DB_USER: syncope
DB_PASSWORD: syncope
DB_POOL_MAX: 10
@@ -47,7 +47,7 @@ services:
syncope-console:
depends_on:
- syncope
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -59,7 +59,7 @@ services:
syncope-enduser:
depends_on:
- syncope
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml b/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml
index 5e36ec0..5911083 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-postgresql.yml
@@ -21,7 +21,7 @@ version: '3.3'
services:
db:
- image: postgres:11.1
+ image: postgres:11.2
restart: always
environment:
POSTGRES_DB: syncope
@@ -31,7 +31,7 @@ services:
syncope:
depends_on:
- db
- image: apache/syncope:${syncope.version}
+ image: apache/syncope:${SYNCOPE_VERSION}
ports:
- "18080:8080"
restart: always
@@ -47,7 +47,7 @@ services:
syncope-console:
depends_on:
- syncope
- image: apache/syncope-console:${syncope.version}
+ image: apache/syncope-console:${SYNCOPE_VERSION}
ports:
- "28080:8080"
restart: always
@@ -59,7 +59,7 @@ services:
syncope-enduser:
depends_on:
- syncope
- image: apache/syncope-enduser:${syncope.version}
+ image: apache/syncope-enduser:${SYNCOPE_VERSION}
ports:
- "38080:8080"
restart: always
diff --git a/pom.xml b/pom.xml
index 142e2c4..be4959e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -523,13 +523,13 @@ under the License.
<nodejs.version>v8.11.4</nodejs.version>
<protractor.version>5.4.0</protractor.version>
- <docker.postgresql.version>11.1</docker.postgresql.version>
+ <docker.postgresql.version>11.2</docker.postgresql.version>
<docker.mariadb.version>10.4</docker.mariadb.version>
<jdbc.postgresql.version>42.2.5</jdbc.postgresql.version>
<jdbc.mysql.version>5.1.47</jdbc.mysql.version>
- <jdbc.mariadb.version>2.3.0</jdbc.mariadb.version>
- <jdbc.mssql.version>6.4.0.jre</jdbc.mssql.version>
+ <jdbc.mariadb.version>2.4.0</jdbc.mariadb.version>
+ <jdbc.mssql.version>7.2.1.jre</jdbc.mssql.version>
<adminUser>admin</adminUser>
<anonymousUser>anonymous</anonymousUser>