From c76ea05b82b70971e28922e31942acb8db78c7ce Mon Sep 17 00:00:00 2001 From: Will Mooreston Date: Mon, 28 Jul 2025 14:24:40 -0700 Subject: [PATCH 1/3] stop creating @files volume locally, so it uses container default (EFS, usually) --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3a05892..a2d5da5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -259,7 +259,6 @@ HEALTHCHECK \ "https://localhost:${LABKEY_PORT}${HEALTHCHECK_ENDPOINT}" \ || exit 1 -VOLUME "${LABKEY_FILES_ROOT}/@files" VOLUME "${LABKEY_HOME}/externalModules" VOLUME "${LABKEY_HOME}/logs" From 903e45f53567714f6a15ee8681ffe684496174d8 Mon Sep 17 00:00:00 2001 From: Will Mooreston Date: Mon, 28 Jul 2025 14:25:02 -0700 Subject: [PATCH 2/3] purge 90+day old system maintenance files --- docker-compose.yml | 1 + entrypoint.sh | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index adfeedc..8591d13 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -427,6 +427,7 @@ services: - DD_COLLECT_APM=${DD_COLLECT_APM-false} - SLEEP=${SLEEP:-0} - PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS=${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS:-90} + - PURGE_MTNC_LOGS_OLDER_THAN_DAYS=${PURGE_MTNC_LOGS_OLDER_THAN_DAYS:-90} pg-lims_starter: image: postgres:15 diff --git a/entrypoint.sh b/entrypoint.sh index f85f8ce..4da4064 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -25,8 +25,9 @@ JSON_OUTPUT="${JSON_OUTPUT:-false}" DD_COLLECT_APM="${DD_COLLECT_APM:-false}" JAVA_RMI_SERVER_HOSTNAME="${JAVA_RMI_SERVER_HOSTNAME:-}" -# set age past which old heap and error log directories are removed +# set age past which old heap and error log directories and system maintenance files are removed PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS="${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS:-90}" +PURGE_MTNC_LOGS_OLDER_THAN_DAYS="${PURGE_MTNC_LOGS_OLDER_THAN_DAYS:-90}" SLEEP="${SLEEP:=0}" @@ -272,6 +273,10 @@ main() { echo "Purging heap/error log directories older than $PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS days..." find "$LABKEY_HOME/files/" -mindepth 1 -maxdepth 1 -type d -ctime +${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS} -name "heap*" | xargs rm -rf + # purge old system maintenance files + echo "Purging system maintenance files older than $PURGE_MTNC_LOGS_OLDER_THAN_DAYS days..." + find "$LABKEY_HOME/files/@files" -mindepth 1 -maxdepth 1 -type d -ctime +${PURGE_MTNC_LOGS_OLDER_THAN_DAYS} -name "system_maintenance*" | xargs rm -rf + # shellcheck disable=SC2086 exec java \ \ From 42220455be490cf9afce582ae7cc834b6581fd36 Mon Sep 17 00:00:00 2001 From: Will Mooreston Date: Tue, 29 Jul 2025 10:22:33 -0700 Subject: [PATCH 3/3] allow externalModules dir to persist in mounted storage --- Dockerfile | 2 -- application.properties | 2 ++ docker-compose.yml | 5 +---- entrypoint.sh | 25 +++++++++++++++---------- mounts/modules/.gitkeep | 0 quickstart_envs.sh | 2 +- 6 files changed, 19 insertions(+), 17 deletions(-) delete mode 100644 mounts/modules/.gitkeep diff --git a/Dockerfile b/Dockerfile index a2d5da5..ec7b56a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -188,7 +188,6 @@ RUN [ -n "${DEBUG}" ] && set -x; \ mkdir -pv \ "${LABKEY_FILES_ROOT}/@files" \ "config" \ - "externalModules" \ "logs" \ "startup" \ "${TOMCAT_BASE_DIR}" \ @@ -259,7 +258,6 @@ HEALTHCHECK \ "https://localhost:${LABKEY_PORT}${HEALTHCHECK_ENDPOINT}" \ || exit 1 -VOLUME "${LABKEY_HOME}/externalModules" VOLUME "${LABKEY_HOME}/logs" EXPOSE ${LABKEY_PORT} diff --git a/application.properties b/application.properties index 1eebbe6..95160d5 100644 --- a/application.properties +++ b/application.properties @@ -90,6 +90,8 @@ context.resources.jdbc.labkeyDataSource.maxWaitMillis=${POSTGRES_MAX_WAIT_MILLIS context.resources.jdbc.labkeyDataSource.accessToUnderlyingConnectionAllowed=${POSTGRES_ACCESS_UNDERLYING_CONNECTIONS} context.resources.jdbc.labkeyDataSource.validationQuery=${POSTGRES_VALIDATION_QUERY} +context.externalModules=${LABKEY_EXTERNAL_MODULES} + # send access logs to file: # server.tomcat.accesslog.directory=/tmp # server.tomcat.accesslog.enabled=true diff --git a/docker-compose.yml b/docker-compose.yml index 8591d13..206ca96 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,6 @@ services: volumes: - ./mounts/files:/labkey/files # - files:/labkey/files - - ./mounts/modules:/labkey/externalModules - ./mounts/logs:/labkey/logs environment: # - DEBUG=1 @@ -132,7 +131,6 @@ services: volumes: - ./mounts/files:/labkey/files # - files:/labkey/files - - ./mounts/modules:/labkey/externalModules - ./mounts/logs:/labkey/logs environment: # - DEBUG=1 @@ -244,7 +242,6 @@ services: volumes: - ./mounts/files:/labkey/files # - files:/labkey/files - - ./mounts/modules:/labkey/externalModules - ./mounts/logs:/labkey/logs environment: # - DEBUG=1 @@ -357,7 +354,6 @@ services: volumes: - ./mounts/files:/labkey/files # - files:/labkey/files - - ./mounts/modules:/labkey/externalModules - ./mounts/logs:/labkey/logs environment: # - DEBUG=1 @@ -428,6 +424,7 @@ services: - SLEEP=${SLEEP:-0} - PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS=${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS:-90} - PURGE_MTNC_LOGS_OLDER_THAN_DAYS=${PURGE_MTNC_LOGS_OLDER_THAN_DAYS:-90} + - LABKEY_EXTERNAL_MODULES=${LABKEY_EXTERNAL_MODULES:-/labkey/files/externalModules} pg-lims_starter: image: postgres:15 diff --git a/entrypoint.sh b/entrypoint.sh index 4da4064..68790c0 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -28,6 +28,9 @@ JAVA_RMI_SERVER_HOSTNAME="${JAVA_RMI_SERVER_HOSTNAME:-}" # set age past which old heap and error log directories and system maintenance files are removed PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS="${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS:-90}" PURGE_MTNC_LOGS_OLDER_THAN_DAYS="${PURGE_MTNC_LOGS_OLDER_THAN_DAYS:-90}" + +# set path to external modules) +LABKEY_EXTERNAL_MODULES="${LABKEY_EXTERNAL_MODULES:-/labkey/files/externalModules}" SLEEP="${SLEEP:=0}" @@ -148,9 +151,6 @@ main() { awsclibin/aws s3 cp $LABKEY_OPTIONAL_APP_PROPERTIES_S3_URI config/ fi - echo "sleeping for $SLEEP seconds..." - sleep $SLEEP - # echo "deleting awscli and unsetting AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, & AWS_SESSION_TOKEN, if set..." # rm -rf awsclibin aws-cli unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN @@ -259,16 +259,13 @@ main() { -Djava.rmi.server.hostname=${JAVA_RMI_SERVER_HOSTNAME}" fi - echo "Purging secrets and other bits from environment variables..." - unset POSTGRES_USER POSTGRES_PASSWORD POSTGRES_HOST POSTGRES_PORT POSTGRES_DB POSTGRES_PARAMETERS - unset SMTP_HOST SMTP_USER SMTP_PORT SMTP_PASSWORD SMTP_AUTH SMTP_FROM SMTP_STARTTLS - unset LABKEY_CREATE_INITIAL_USER LABKEY_CREATE_INITIAL_USER_APIKEY LABKEY_INITIAL_USER_APIKEY LABKEY_INITIAL_USER_EMAIL LABKEY_INITIAL_USER_GROUP LABKEY_INITIAL_USER_ROLE - unset LABKEY_EK SLEEP CONTAINER_PRIVATE_IP - echo "Creating new heap/error log directory..." HEAP_AND_ERROR_PATH="$LABKEY_HOME/files/heap_dumps_and_errors_$(date +%Y%m%d_%H%M%S)" mkdir -pv $HEAP_AND_ERROR_PATH + echo "Creating externalModules directory if it does not already exist..." + mkdir -pv $LABKEY_EXTERNAL_MODULES + # purge old heap/error directories echo "Purging heap/error log directories older than $PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS days..." find "$LABKEY_HOME/files/" -mindepth 1 -maxdepth 1 -type d -ctime +${PURGE_HEAP_AND_ERROR_LOGS_OLDER_THAN_DAYS} -name "heap*" | xargs rm -rf @@ -277,6 +274,15 @@ main() { echo "Purging system maintenance files older than $PURGE_MTNC_LOGS_OLDER_THAN_DAYS days..." find "$LABKEY_HOME/files/@files" -mindepth 1 -maxdepth 1 -type d -ctime +${PURGE_MTNC_LOGS_OLDER_THAN_DAYS} -name "system_maintenance*" | xargs rm -rf + echo "sleeping for $SLEEP seconds..." + sleep $SLEEP + + echo "Purging secrets and other bits from environment variables..." + unset POSTGRES_USER POSTGRES_PASSWORD POSTGRES_HOST POSTGRES_PORT POSTGRES_DB POSTGRES_PARAMETERS + unset SMTP_HOST SMTP_USER SMTP_PORT SMTP_PASSWORD SMTP_AUTH SMTP_FROM SMTP_STARTTLS + unset LABKEY_CREATE_INITIAL_USER LABKEY_CREATE_INITIAL_USER_APIKEY LABKEY_INITIAL_USER_APIKEY LABKEY_INITIAL_USER_EMAIL LABKEY_INITIAL_USER_GROUP LABKEY_INITIAL_USER_ROLE + unset LABKEY_EK SLEEP CONTAINER_PRIVATE_IP + # shellcheck disable=SC2086 exec java \ \ @@ -295,7 +301,6 @@ main() { \ -Dlabkey.home="$LABKEY_HOME" \ -Dlabkey.log.home="${LABKEY_HOME}/logs" \ - -Dlabkey.externalModulesDir="${LABKEY_HOME}/externalModules" \ \ -Djava.library.path=/usr/lib:/usr/lib/x86_64-linux-gnu \ \ diff --git a/mounts/modules/.gitkeep b/mounts/modules/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/quickstart_envs.sh b/quickstart_envs.sh index bbefdf7..2ff7524 100644 --- a/quickstart_envs.sh +++ b/quickstart_envs.sh @@ -3,7 +3,7 @@ # example minimal set of environment variables to get started - see readme for additional envs you may wish to set # embedded tomcat LabKey .jar version to build container with -export LABKEY_VERSION="25.7" +export LABKEY_VERSION="25.8" # minimal SMTP settings export SMTP_HOST="localhost"