Files
nupst/test/manualdocker/01-setup-v3-container.sh

125 lines
3.4 KiB
Bash
Raw Normal View History

#!/bin/bash
#
# Setup Docker container with systemd and install NUPST v3
# This creates a container from commit 806f81c6a057a2a5da586b96a231d391f12eb1bb (v3)
#
set -e
CONTAINER_NAME="nupst-test-v3"
V3_COMMIT="806f81c6a057a2a5da586b96a231d391f12eb1bb"
echo "================================================"
echo " NUPST v3 Test Container Setup"
echo "================================================"
echo ""
# Check if container already exists
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "⚠️ Container ${CONTAINER_NAME} already exists"
read -p "Remove and recreate? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "→ Stopping and removing existing container..."
docker stop ${CONTAINER_NAME} 2>/dev/null || true
docker rm ${CONTAINER_NAME} 2>/dev/null || true
else
echo "Exiting. Remove manually with: docker rm -f ${CONTAINER_NAME}"
exit 1
fi
fi
echo "→ Creating Docker container (will install systemd)..."
docker run -d \
--name ${CONTAINER_NAME} \
--privileged \
--cgroupns=host \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
ubuntu:22.04 \
/bin/bash -c "apt-get update && apt-get install -y systemd systemd-sysv && exec /sbin/init"
echo "→ Waiting for systemd to initialize..."
sleep 10
echo "→ Waiting for dpkg lock to be released..."
docker exec ${CONTAINER_NAME} bash -c "
while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do
echo ' Waiting for dpkg lock...'
sleep 2
done
echo ' dpkg lock released'
"
echo "→ Installing prerequisites in container..."
docker exec ${CONTAINER_NAME} bash -c "
apt-get update -qq
apt-get install -y -qq git curl sudo
"
echo "→ Cloning NUPST v3 (commit ${V3_COMMIT})..."
docker exec ${CONTAINER_NAME} bash -c "
cd /opt
git clone https://code.foss.global/serve.zone/nupst.git
cd nupst
git checkout ${V3_COMMIT}
echo 'Checked out commit:'
git log -1 --oneline
"
echo "→ Running NUPST v3 installation script..."
docker exec ${CONTAINER_NAME} bash -c "
cd /opt/nupst
bash install.sh -y
"
echo "→ Creating dummy NUPST configuration for testing..."
docker exec ${CONTAINER_NAME} bash -c "
mkdir -p /etc/nupst
cat > /etc/nupst/config.json << 'EOF'
{
\"upsList\": [
{
\"id\": \"test-ups\",
\"name\": \"Test UPS\",
\"host\": \"127.0.0.1\",
\"port\": 161,
\"community\": \"public\",
\"version\": \"2c\",
\"batteryLowOID\": \"1.3.6.1.4.1.935.1.1.1.3.3.1.0\",
\"onBatteryOID\": \"1.3.6.1.4.1.935.1.1.1.3.3.2.0\",
\"shutdownCommand\": \"echo 'Shutdown triggered'\"
}
],
\"groups\": []
}
EOF
echo 'Dummy config created at /etc/nupst/config.json'
"
echo "→ Enabling NUPST systemd service..."
docker exec ${CONTAINER_NAME} bash -c "
nupst enable
"
echo "→ Starting NUPST service..."
docker exec ${CONTAINER_NAME} bash -c "
nupst start
"
echo ""
echo "================================================"
echo " ✓ NUPST v3 Container Ready"
echo "================================================"
echo ""
echo "Container name: ${CONTAINER_NAME}"
echo "NUPST version: v3 (commit ${V3_COMMIT})"
echo ""
echo "Useful commands:"
echo " docker exec -it ${CONTAINER_NAME} bash"
echo " docker exec ${CONTAINER_NAME} systemctl status nupst"
echo " docker exec ${CONTAINER_NAME} nupst --version"
echo " docker stop ${CONTAINER_NAME}"
echo " docker start ${CONTAINER_NAME}"
echo " docker rm -f ${CONTAINER_NAME}"
echo ""