From bc807c4629775ed8b3f71b7fb9babd3c58623c66 Mon Sep 17 00:00:00 2001 From: Opliko Date: Sat, 11 May 2024 02:05:46 +0200 Subject: [PATCH 1/3] fix: some issues with "small" docker improvements (#12564) * fix: support previous FORCE_BUILD_BEFORE_START variable too * fix: attempt to fix permission issues and inform properly on failure * fix: profile-gate redis and re-add profile-gated postgres to main file For now it's better to maintain compatibility - current postgres users will run mongodb unnecessarily withuot changes, but at least it'll still work fine --- docker-compose-pgsql.yml | 2 ++ docker-compose.yml | 21 +++++++++++++++++++++ install/docker/entrypoint.sh | 11 ++++++++--- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/docker-compose-pgsql.yml b/docker-compose-pgsql.yml index 579bb70a44..806e29acc0 100644 --- a/docker-compose-pgsql.yml +++ b/docker-compose-pgsql.yml @@ -30,6 +30,8 @@ services: # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF volumes: - redis-data:/data + profiles: + - redis volumes: postgres-data: diff --git a/docker-compose.yml b/docker-compose.yml index d9b793b8c8..21f16cb7f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,6 +33,20 @@ services: # command: ['redis-server', '--save', '60', '1', '--loglevel', 'warning'] # uncomment if you want to use snapshotting instead of AOF volumes: - redis-data:/data + profiles: + - redis + + postgres: + image: postgres:16.1-alpine + restart: unless-stopped + environment: + POSTGRES_USER: nodebb + POSTGRES_PASSWORD: nodebb + POSTGRES_DB: nodebb + volumes: + - postgres-data:/var/lib/postgresql/data + profiles: + - postgres volumes: mongo-data: @@ -49,6 +63,13 @@ volumes: type: none device: ./.docker/database/redis + postgres-data: + driver: local + driver_opts: + o: bind + type: none + device: ./.docker/database/postgresql/data + nodebb-build: driver: local driver_opts: diff --git a/install/docker/entrypoint.sh b/install/docker/entrypoint.sh index fd0359192c..2913ae7c8f 100755 --- a/install/docker/entrypoint.sh +++ b/install/docker/entrypoint.sh @@ -7,7 +7,7 @@ set_defaults() { export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" export CONFIG="$CONFIG_DIR/config.json" export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" - export START_BUILD="${START_BUILD:-false}" + export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}" export SETUP="${SETUP:-}" export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}" export OVERRIDE_UPDATE_LOCK="${OVERRIDE_UPDATE_LOCK:-false}" @@ -24,8 +24,13 @@ check_directory() { } fi if [ ! -w "$dir" ]; then - echo "Error: No write permission for directory $dir" - exit 1 + echo "Warning: No write permission for directory $dir, attempting to fix..." + chown -R $USER:$USER "$dir" || true # attempt to change ownership, do not exit on failure + chmod -R 760 "$dir" || true # attempt to change permissions, do not exit on failure + if [ ! -w "$dir" ]; then + echo "Error: No write permission for directory $dir. Exiting..." + exit 1 + fi fi } From 995b2de551b6639d05bf2ae69d78cdc86aeac03f Mon Sep 17 00:00:00 2001 From: Opliko Date: Sat, 11 May 2024 17:01:17 +0200 Subject: [PATCH 2/3] fix(docker): support all previously used env variables correctly (#12567) * fix: set build verb default * fix: use override_update_lock again --- install/docker/entrypoint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/install/docker/entrypoint.sh b/install/docker/entrypoint.sh index 2913ae7c8f..dd17d707e7 100755 --- a/install/docker/entrypoint.sh +++ b/install/docker/entrypoint.sh @@ -7,6 +7,7 @@ set_defaults() { export CONFIG_DIR="${CONFIG_DIR:-/opt/config}" export CONFIG="$CONFIG_DIR/config.json" export NODEBB_INIT_VERB="${NODEBB_INIT_VERB:-install}" + export NODEBB_BUILD_VERB="${NODEBB_BUILD_VERB:-build}" export START_BUILD="${START_BUILD:-${FORCE_BUILD_BEFORE_START:-false}}" export SETUP="${SETUP:-}" export PACKAGE_MANAGER="${PACKAGE_MANAGER:-npm}" @@ -52,11 +53,11 @@ copy_or_link_files() { esac # Check if source and destination files are the same - if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ]; then + if [ "$(realpath "$src_dir/package.json")" != "$(realpath "$dest_dir/package.json")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then cp "$src_dir/package.json" "$dest_dir/package.json" fi - if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ]; then + if [ "$(realpath "$src_dir/$lock_file")" != "$(realpath "$dest_dir/$lock_file")" ] || [ "$OVERRIDE_UPDATE_LOCK" = true ]; then cp "$src_dir/$lock_file" "$dest_dir/$lock_file" fi @@ -102,7 +103,7 @@ build_forum() { local config="$1" local start_build="$2" local package_hash=$(md5sum install/package.json | head -c 32) - if [ package_hash = "$(cat $CONFIG_DIR/install_hash.md5)" ]; then + if [ "$package_hash" = "$(cat $CONFIG_DIR/install_hash.md5 || true)" ]; then echo "package.json was updated. Upgrading..." /usr/src/app/nodebb upgrade --config="$config" || { echo "Failed to build NodeBB. Exiting..." From 49a510e925b87ea89f6d1fe31068c77e11b59852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sun, 12 May 2024 21:23:35 -0400 Subject: [PATCH 3/3] fix: chat message search, closes #12571 --- public/src/client/chats/message-search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/src/client/chats/message-search.js b/public/src/client/chats/message-search.js index d6490c8b3e..24da351a76 100644 --- a/public/src/client/chats/message-search.js +++ b/public/src/client/chats/message-search.js @@ -77,7 +77,7 @@ define('forum/chats/message-search', [ async function displayResults(data) { removeResults(); - if (!data.length) { + if (!data.messages.length) { resultListEl.removeClass('hidden'); chatContent.addClass('hidden'); return resultListEl.find('[component="chat/message/search/no-results"]').removeClass('hidden'); @@ -85,7 +85,7 @@ define('forum/chats/message-search', [ resultListEl.find('[component="chat/message/search/no-results"]').addClass('hidden'); const html = await app.parseAndTranslate('partials/chats/messages', { - messages: data, + messages: data.messages, isAdminOrGlobalMod: app.user.isAdmin || app.user.isGlobalMod, });