This is an automated email from the ASF dual-hosted git repository.

danwatford pushed a commit to branch experimental-docker
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/experimental-docker by this 
push:
     new 074537cd14 Fixed: OFBiz configuration files override ofbiz.jar 
(OFBIZ-12757)
074537cd14 is described below

commit 074537cd14c3d75e4bda6ac8596600342e1f5080
Author: Daniel Watford <dan...@watfordconsulting.com>
AuthorDate: Thu Feb 23 16:05:01 2023 +0000

    Fixed: OFBiz configuration files override ofbiz.jar (OFBIZ-12757)
    
    The docker-entrypoint.sh script modifies various property files to
    modify OFBiz configuration based on environment variables. These
    changes were not having any effect since build-time copies of the
    property files were contained in ofbiz.jar.
    
    Modified property files are now placed in /ofbiz/config which is earlier
    in the classpath that ofbiz.jar, meaning configuration changes are now
    applied as intended.
    
    Also avoided setting the host-allowed-headers property in
    security.properties and the content prefix properties in url.properties
    rather than defaulting to the default values would prevent correct
    functionality when using a port other than 443.
---
 DOCKER.md                   |  4 ++--
 Dockerfile                  |  4 ++++
 docker/docker-entrypoint.sh | 28 +++++++++++++++-------------
 3 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/DOCKER.md b/DOCKER.md
index 3f0b43f5ec..f56d01d676 100644
--- a/DOCKER.md
+++ b/DOCKER.md
@@ -72,8 +72,8 @@ Environment variables are used in `docker-entrypoint.sh` to 
control configuratio
 |OFBIZ_ADMIN_USER | admin | Sets the username of the OFBIZ admin user. |
 |OFBIZ_ADMIN_PASSWORD | ofbiz | Sets the password of the OFBIZ admin user. |
 |OFBIZ_DATA_LOAD | seed | Determine what type of data loading is required. 
*none*: No data loading is perfomed. *seed*: Seed data is loaded. *demo*: Demo 
data is loaded. |
-|OFBIZ_HOST | localhost | Specify the hostname used to access OFBiz. |
-|OFBIZ_CONTENT_URL_PREFIX | https://${OFBIZ_HOST} | Used to set the 
content.url.prefix.secure and content.url.prefix.standard properties in 
`framework/webapp/config/url.properties`. |
+|OFBIZ_HOST | <empty> | Specify the hostname used to access OFBiz. If empty 
then the default value of host-headers-allowed from 
framework/security/config/security.properties is used. |
+|OFBIZ_CONTENT_URL_PREFIX | <empty> | Used to set the 
content.url.prefix.secure and content.url.prefix.standard properties in 
`framework/webapp/config/url.properties`. |
 |OFBIZ_ENABLE_AJP_PORT | *empty* | Enable the AJP (Apache JServe Protocol) 
port to allow communication with OFBiz via a reverse proxy. Enabled when this 
environment variable contains a non-empty value. |
 
 ### Hooks
diff --git a/Dockerfile b/Dockerfile
index 9dcd87e0d8..f7f1d47e7b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -45,6 +45,8 @@ WORKDIR /ofbiz
 RUN 
--mount=type=bind,from=builder,source=/builder/build/distributions/ofbiz.tar,target=/mnt/ofbiz.tar
 \
     ["tar", "--extract", "--strip-components=1", "--file=/mnt/ofbiz.tar"]
 
+RUN ["mkdir", "/ofbiz/runtime", "/ofbiz/config"]
+
 COPY docker/docker-entrypoint.sh .
 COPY docker/send_ofbiz_stop_signal.sh .
 
@@ -68,6 +70,7 @@ RUN touch /ofbiz/runtime/container_state/admin_loaded
 VOLUME ["/docker-entrypoint-before-config-applied.d", 
"/docker-entrypoint-after-config-applied.d", \
     "/docker-entrypoint-before-data-load.d", 
"/docker-entrypoint-after-data-load.d", \
     "/docker-entrypoint-additional-data.d"]
+VOLUME ["/ofbiz/config", "/ofbiz/runtime"]
 
 
 
###################################################################################
@@ -77,3 +80,4 @@ FROM runtimebase as runtime
 VOLUME ["/docker-entrypoint-before-config-applied.d", 
"/docker-entrypoint-after-config-applied.d", \
     "/docker-entrypoint-before-data-load.d", 
"/docker-entrypoint-after-data-load.d", \
     "/docker-entrypoint-additional-data.d"]
+VOLUME ["/ofbiz/config", "/ofbiz/runtime"]
diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh
index d6ac5e8368..9aefe492e7 100755
--- a/docker/docker-entrypoint.sh
+++ b/docker/docker-entrypoint.sh
@@ -48,12 +48,12 @@
 # OFBIZ_HOST
 # Specify the hostname used to access OFBiz.
 # Used to populate the host-headers-allowed property in 
framework/security/config/security.properties.
-# Default: localhost
+# Default: default value of host-headers-allowed from 
framework/security/config/security.properties.
 #
 # OFBIZ_CONTENT_URL_PREFIX
 # Used to set the content.url.prefix.secure and content.url.prefix.standard 
properties in
 # framework/webapp/config/url.properties.
-# Default: https://${OFBIZ_HOST}
+# Default: <empty>>
 #
 # OFBIZ_ENABLE_AJP_PORT
 # Enable the AJP (Apache JServe Protocol) port to allow communication with 
OFBiz via a reverse proxy.
@@ -88,17 +88,13 @@ ofbiz_setup_env() {
   case "$OFBIZ_DATA_LOAD" in
   none | seed | demo) ;;
   *)
-    OFBIZ_DATA_LOAD="none"
+    OFBIZ_DATA_LOAD="seed"
     ;;
   esac
 
   OFBIZ_ADMIN_USER=${OFBIZ_ADMIN_USER:-admin}
 
   OFBIZ_ADMIN_PASSWORD=${OFBIZ_ADMIN_PASSWORD:-ofbiz}
-
-  OFBIZ_HOST=${OFBIZ_HOST:-localhost}
-
-  OFBIZ_CONTENT_URL_PREFIX=${OFBIZ_CONTENT_URL_PREFIX:-https://${OFBIZ_HOST}}
 }
 
 ###############################################################################
@@ -206,6 +202,8 @@ load_admin_user() {
 
 ###############################################################################
 # Apply any configuration changes required.
+# Changed property files need to be placed in /ofbiz/config so they appear 
earlier
+# in the classpath and override the build-time copies of the properties in 
ofbiz.jar.
 apply_configuration() {
   if [ ! -f "$CONTAINER_CONFIG_APPLIED" ]; then
     run_init_hooks /docker-entrypoint-before-config-applied.d/*
@@ -217,13 +215,17 @@ apply_configuration() {
        /ofbiz/framework/catalina/ofbiz-component.xml
     fi
 
-    sed --in-place \
-     "s/host-headers-allowed=.*/host-headers-allowed=${OFBIZ_HOST}/" 
framework/security/config/security.properties
+    if [ -n "$OFBIZ_HOST" ]; then
+      sed "s/host-headers-allowed=.*/host-headers-allowed=${OFBIZ_HOST}/" \
+        framework/security/config/security.properties > 
config/security.properties
+    fi
 
-    sed --in-place \
-     
--expression="s#content.url.prefix.secure=.*#content.url.prefix.secure=${OFBIZ_CONTENT_URL_PREFIX}#;"
 \
-     
--expression="s#content.url.prefix.standard=.*#content.url.prefix.standard=${OFBIZ_CONTENT_URL_PREFIX}#;"
 \
-     framework/webapp/config/url.properties
+    if [ -n "$OFBIZ_CONTENT_URL_PREFIX" ]; then
+      sed \
+      
--expression="s#content.url.prefix.secure=.*#content.url.prefix.secure=${OFBIZ_CONTENT_URL_PREFIX}#;"
 \
+      
--expression="s#content.url.prefix.standard=.*#content.url.prefix.standard=${OFBIZ_CONTENT_URL_PREFIX}#;"
 \
+      framework/webapp/config/url.properties > config/url.properties
+    fi
 
     touch "$CONTAINER_CONFIG_APPLIED"
     run_init_hooks /docker-entrypoint-after-config-applied.d/*

Reply via email to