Migrate from bitnami/mongodb to official mongo image

Updated docker-compose template to use official mongo image with
correct data directory (/data/db). Added patch_docker_compose()
function to automatically migrate existing configurations from
bitnami/mongodb to mongo image, including volume path fixes.
Containers are restarted automatically if they were running.
develop
Dominik Dzienia 3 weeks ago
parent b8c9aa0dc2
commit 60e6079b04

@ -0,0 +1,3 @@
- this script runs in console UI style (ncurses style)
- do not change install.sh file - it is generated from src/lib.sh and src/setup.sh with npm run build command
- when generating code with command that may output to console, make sure to use convention to add >> "$LOGTO" 2>&1 to capture it into logs and not break UI

@ -1,6 +1,6 @@
#!/bin/bash
### version: 1.9.5
### version: 1.10.0
# ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.#
# Nightscout Mikr.us setup script #
@ -23,7 +23,7 @@
REQUIRED_NODE_VERSION=18.0.0
REQUIRED_DOTENV_VERSION=1.3.0
LOGTO=/dev/null
LOGTO=/srv/nightscout/data/debug.log
NIGHTSCOUT_ROOT_DIR=/srv/nightscout
CONFIG_ROOT_DIR=/srv/nightscout/config
DATA_ROOT_DIR=/srv/nightscout/data
@ -54,8 +54,8 @@ DISK_LOW_MAIL=5184000 # == 60 days in seconds
DISK_CRITICAL_WARNING=104857600 # == 100 MiB
DISK_CRITICAL_MAIL=604800 # == 7 days in seconds
DOCKER_DOWN_MAIL=604800 # == 7 days in seconds
SCRIPT_VERSION="1.9.5" #auto-update
SCRIPT_BUILD_TIME="2025.03.19" #auto-update
SCRIPT_VERSION="1.10.0" #auto-update
SCRIPT_BUILD_TIME="2026.01.04" #auto-update
#=======================================
# SETUP
@ -740,10 +740,50 @@ check_docker() {
}
check_docker_compose() {
docker-compose -v >/dev/null 2>&1
docker compose -v >/dev/null 2>&1
add_if_not_ok "Docker compose" "docker-compose"
}
patch_docker_compose() {
if [[ -f $DOCKER_COMPOSE_FILE ]]; then
local patched=0
local containers_running=0
# Check if containers are already running before patching
local ns_status=$(get_docker_status "ns-server")
local db_status=$(get_docker_status "ns-database")
if [[ "$ns_status" == "running" ]] || [[ "$db_status" == "running" ]]; then
containers_running=1
fi
# Check if mongodb image needs patching (bitnami/mongodb or incorrect format)
if grep -qE "image:\s*(bitnami/)?mongo(db)?" "$DOCKER_COMPOSE_FILE"; then
ohai "Patching docker-compose.yml MongoDB image..."
# Replace any bitnami/mongodb or incorrect mongo image with proper format
sed -i -E 's|image:\s*"?bitnami/mongodb:.*"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
sed -i -E 's|image:\s*"?mongo:[^"]+"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
sed -i -E 's|image:\s*"?mongodb:[^"]+"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
patched=1
fi
# Check if volume path needs patching (bitnami/mongodb -> data/db)
if grep -q ":/bitnami/mongodb\"" "$DOCKER_COMPOSE_FILE"; then
ohai "Patching docker-compose.yml MongoDB volume path..."
sed -i -E 's|:/bitnami/mongodb"?|:/data/db"|g' "$DOCKER_COMPOSE_FILE"
patched=1
fi
if [ "$patched" -eq 1 ]; then
msgcheck "Docker compose file patched"
# Restart containers only if they were already running
if [ "$containers_running" -eq 1 ]; then
ohai "Restarting containers to apply patched configuration..."
update_containers
msgcheck "Containers restarted"
fi
fi
fi
}
check_jq() {
jq --help >/dev/null 2>&1
add_if_not_ok "JSON parser" "jq"
@ -1007,12 +1047,12 @@ get_space_info() {
}
install_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up --no-recreate -d >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up --no-recreate -d >>"$LOGTO" 2>&1
}
update_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml pull >>"$LOGTO" 2>&1
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up -d >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml pull >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up -d >>"$LOGTO" 2>&1
}
install_containers_progress() {
@ -1023,7 +1063,7 @@ install_containers_progress() {
}
uninstall_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml down >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml down >>"$LOGTO" 2>&1
}
uninstall_containers_progress() {
@ -3009,6 +3049,7 @@ check_dotenv
setup_users
setup_dir_structure
download_conf
patch_docker_compose
download_tools
setup_security

@ -1,6 +1,6 @@
{
"name": "@dlvoy/ns-installer-mikrus",
"version": "1.9.5",
"version": "1.10.0",
"description": "Nightscout installer for mikr.us VPS",
"main": "index.js",
"scripts": {

@ -7,7 +7,7 @@
REQUIRED_NODE_VERSION=18.0.0
REQUIRED_DOTENV_VERSION=1.3.0
LOGTO=/dev/null
LOGTO=/srv/nightscout/data/debug.log
NIGHTSCOUT_ROOT_DIR=/srv/nightscout
CONFIG_ROOT_DIR=/srv/nightscout/config
DATA_ROOT_DIR=/srv/nightscout/data
@ -724,10 +724,50 @@ check_docker() {
}
check_docker_compose() {
docker-compose -v >/dev/null 2>&1
docker compose -v >/dev/null 2>&1
add_if_not_ok "Docker compose" "docker-compose"
}
patch_docker_compose() {
if [[ -f $DOCKER_COMPOSE_FILE ]]; then
local patched=0
local containers_running=0
# Check if containers are already running before patching
local ns_status=$(get_docker_status "ns-server")
local db_status=$(get_docker_status "ns-database")
if [[ "$ns_status" == "running" ]] || [[ "$db_status" == "running" ]]; then
containers_running=1
fi
# Check if mongodb image needs patching (bitnami/mongodb or incorrect format)
if grep -qE "image:\s*(bitnami/)?mongo(db)?" "$DOCKER_COMPOSE_FILE"; then
ohai "Patching docker-compose.yml MongoDB image..."
# Replace any bitnami/mongodb or incorrect mongo image with proper format
sed -i -E 's|image:\s*"?bitnami/mongodb:.*"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
sed -i -E 's|image:\s*"?mongo:[^"]+"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
sed -i -E 's|image:\s*"?mongodb:[^"]+"?|image: "mongo:${NS_MONGODB_TAG}"|g' "$DOCKER_COMPOSE_FILE"
patched=1
fi
# Check if volume path needs patching (bitnami/mongodb -> data/db)
if grep -q ":/bitnami/mongodb\"" "$DOCKER_COMPOSE_FILE"; then
ohai "Patching docker-compose.yml MongoDB volume path..."
sed -i -E 's|:/bitnami/mongodb"?|:/data/db"|g' "$DOCKER_COMPOSE_FILE"
patched=1
fi
if [ "$patched" -eq 1 ]; then
msgcheck "Docker compose file patched"
# Restart containers only if they were already running
if [ "$containers_running" -eq 1 ]; then
ohai "Restarting containers to apply patched configuration..."
update_containers
msgcheck "Containers restarted"
fi
fi
fi
}
check_jq() {
jq --help >/dev/null 2>&1
add_if_not_ok "JSON parser" "jq"
@ -991,12 +1031,12 @@ get_space_info() {
}
install_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up --no-recreate -d >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up --no-recreate -d >>"$LOGTO" 2>&1
}
update_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml pull >>"$LOGTO" 2>&1
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up -d >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml pull >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml up -d >>"$LOGTO" 2>&1
}
install_containers_progress() {
@ -1007,7 +1047,7 @@ install_containers_progress() {
}
uninstall_containers() {
docker-compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml down >>"$LOGTO" 2>&1
docker compose --env-file /srv/nightscout/config/deployment.env -f /srv/nightscout/config/docker-compose.yml down >>"$LOGTO" 2>&1
}
uninstall_containers_progress() {

@ -43,6 +43,7 @@ check_dotenv
setup_users
setup_dir_structure
download_conf
patch_docker_compose
download_tools
setup_security

@ -12,11 +12,11 @@ services:
mem_limit: 400m
mem_reservation: 100M
restart: always
image: "bitnami/mongodb:${NS_MONGODB_TAG}"
image: "mongo:${NS_MONGODB_TAG}"
environment:
- MONGODB_EXTRA_FLAGS=--wiredTigerCacheSizeGB=0.4
volumes:
- "${NS_DATA_DIR}/mongodb:/bitnami/mongodb"
- "${NS_DATA_DIR}/mongodb:/data/db"
ports:
- ${INTERNAL_MONGO_PORT}:27017
networks:

@ -1 +1 @@
2025-03-19T00:31:27.110Z
2026-01-04T18:53:49.085Z
Loading…
Cancel
Save