diff --git a/docker-compose.yml b/docker-compose.yml
index 75d17d3bc2d..79384cb612a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -19,7 +19,9 @@ x-op-app: &app
environment:
- "RAILS_CACHE_STORE=memcache"
- "OPENPROJECT_CACHE__MEMCACHE__SERVER=cache:11211"
+ - "OPENPROJECT_RAILS__RELATIVE__URL__ROOT=${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}"
- "DATABASE_URL=postgres://postgres:p4ssw0rd@db/openproject"
+ - "USE_PUMA=true"
# set to true to enable the email receiving feature. See ./docker/cron for more options
- "IMAP_ENABLED=false"
volumes:
@@ -55,6 +57,7 @@ services:
- "8080:80"
environment:
- APP_HOST=web
+ - "OPENPROJECT_RAILS__RELATIVE__URL__ROOT=${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}"
depends_on:
- web
networks:
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 72604463e27..cbfa57e9c5d 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -41,11 +41,25 @@ if [ "$(id -u)" = '0' ]; then
mkdir -p $APP_DATA_PATH/{files,git,svn}
chown -R $APP_USER:$APP_USER $APP_DATA_PATH /etc/apache2/sites-enabled/
+ # Clean up any dangling PID file
+ rm -f $APP_PATH/tmp/pids/*
+
# Clean up a dangling PID file of apache
if [ -e "$APACHE_PIDFILE" ]; then
rm -f $APACHE_PIDFILE || true
fi
+ # Fix assets path if relative URL is used
+ relative_url_root_without_trailing_slash="$(echo $OPENPROJECT_RAILS__RELATIVE__URL__ROOT | sed 's:/*$::')"
+ if [ "$relative_url_root_without_trailing_slash" != "" ]; then
+ for file in $(egrep -lR "/assets/" "$APP_PATH/public"); do
+ # only the font paths in the CSSs need updating
+ sed -i "s|/assets/|${relative_url_root_without_trailing_slash}/assets/|g" $file
+ # the .gz is the one served by puma, so rebuild it
+ gzip --force --keep $file
+ done
+ fi
+
if [ ! -z "$ATTACHMENTS_STORAGE_PATH" ]; then
mkdir -p "$ATTACHMENTS_STORAGE_PATH"
chown -R "$APP_USER:$APP_USER" "$ATTACHMENTS_STORAGE_PATH"
diff --git a/docker/proxy.conf.erb b/docker/proxy.conf.erb
index bd534b193fe..437c4ba0087 100644
--- a/docker/proxy.conf.erb
+++ b/docker/proxy.conf.erb
@@ -5,8 +5,8 @@
ProxyRequests off
ProxyPreserveHost On
-
- ProxyPass http://<%= ENV.fetch("APP_HOST", "127.0.0.1") %>:8080/ retry=0
- ProxyPassReverse http://<%= ENV.fetch("APP_HOST", "127.0.0.1") %>:8080/
+ />
+ ProxyPass http://<%= ENV.fetch("APP_HOST", "127.0.0.1") %>:8080<%= ENV.fetch("OPENPROJECT_RAILS__RELATIVE__URL__ROOT", "").chomp("/") %>/ retry=0
+ ProxyPassReverse http://<%= ENV.fetch("APP_HOST", "127.0.0.1") %>:8080<%= ENV.fetch("OPENPROJECT_RAILS__RELATIVE__URL__ROOT", "").chomp("/") %>/
diff --git a/docker/supervisord b/docker/supervisord
index 9adf4b3a9b8..b6d5cd8b4d2 100755
--- a/docker/supervisord
+++ b/docker/supervisord
@@ -110,13 +110,5 @@ fi
echo "-----> Database setup finished."
echo " On first installation, the default admin credentials are login: admin, password: admin"
-if [ -n "$OPENPROJECT_RAILS__RELATIVE__URL__ROOT" ]; then
- echo
- echo "-----> Precompiling assets since RAILS_RELATIVE_URL_ROOT is set. This may take a minute."
- RAILS_RELATIVE_URL_ROOT=$OPENPROJECT_RAILS__RELATIVE__URL__ROOT bash /app/docker/precompile-assets.sh
- echo "-----> Asset precompilation finished."
- echo
-fi
-
echo "-----> Launching supervisord..."
exec /usr/bin/supervisord -c $APP_PATH/docker/supervisord.conf -e ${SUPERVISORD_LOG_LEVEL}