feat(docker-env2): add lifecycle scripts (init-db, deploy, teardown, seed-sites)
This commit is contained in:
34
docker-env2/deploy.sh
Executable file
34
docker-env2/deploy.sh
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
echo "=== ScadaLink Env2 Docker Deploy ==="
|
||||||
|
|
||||||
|
# Reuse the primary build (same scadalink:latest image, same network creation)
|
||||||
|
"$SCRIPT_DIR/../docker/build.sh"
|
||||||
|
|
||||||
|
# Ensure env2 databases exist on the shared scadalink-mssql
|
||||||
|
"$SCRIPT_DIR/init-db.sh"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Deploying env2 containers..."
|
||||||
|
docker compose -f "$SCRIPT_DIR/docker-compose.yml" up -d --force-recreate
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Container status:"
|
||||||
|
docker compose -f "$SCRIPT_DIR/docker-compose.yml" ps
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Access points:"
|
||||||
|
echo " Central (Traefik LB): http://localhost:9100"
|
||||||
|
echo " Central UI (node A): http://localhost:9101"
|
||||||
|
echo " Central UI (node B): http://localhost:9102"
|
||||||
|
echo " Health check: http://localhost:9101/health/ready"
|
||||||
|
echo " Active node check: http://localhost:9101/health/active"
|
||||||
|
echo " Traefik dashboard: http://localhost:8181"
|
||||||
|
echo ""
|
||||||
|
echo "To seed test site (first-time setup):"
|
||||||
|
echo " docker-env2/seed-sites.sh"
|
||||||
|
echo ""
|
||||||
|
echo "Logs: docker compose -f $SCRIPT_DIR/docker-compose.yml logs -f"
|
||||||
15
docker-env2/init-db.sh
Executable file
15
docker-env2/init-db.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
if ! docker ps --format '{{.Names}}' | grep -q '^scadalink-mssql$'; then
|
||||||
|
echo "ERROR: scadalink-mssql is not running. Start it: cd infra && docker compose up -d" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Applying env2 database setup..."
|
||||||
|
docker exec -i scadalink-mssql /opt/mssql-tools18/bin/sqlcmd \
|
||||||
|
-S localhost -U sa -P 'ScadaLink_Dev1#' -C \
|
||||||
|
< "$SCRIPT_DIR/../infra/mssql/setup-env2.sql"
|
||||||
|
|
||||||
|
echo "Env2 databases ready."
|
||||||
38
docker-env2/seed-sites.sh
Executable file
38
docker-env2/seed-sites.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Seed env2's single test site with Akka and gRPC addresses.
|
||||||
|
# Run after deploy.sh once the env2 central cluster is healthy.
|
||||||
|
#
|
||||||
|
# Prerequisites:
|
||||||
|
# - Infrastructure services running (infra/docker-compose up -d)
|
||||||
|
# - Env2 application containers running (docker-env2/deploy.sh)
|
||||||
|
# - Env2 central cluster healthy (curl http://localhost:9100/health/ready)
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# docker-env2/seed-sites.sh
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
CLI="dotnet run --project $PROJECT_ROOT/src/ScadaLink.CLI --"
|
||||||
|
AUTH="--username multi-role --password password"
|
||||||
|
URL="--url http://localhost:9100"
|
||||||
|
|
||||||
|
echo "=== Seeding ScadaLink Env2 Sites ==="
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Creating Site-X (Env2 Site X)..."
|
||||||
|
$CLI $URL $AUTH site create \
|
||||||
|
--name "Env2 Site X" \
|
||||||
|
--identifier "site-x" \
|
||||||
|
--description "Env2 test site - two-node cluster" \
|
||||||
|
--node-a-address "akka.tcp://scadalink@scadalink-env2-site-x-a:8082" \
|
||||||
|
--node-b-address "akka.tcp://scadalink@scadalink-env2-site-x-b:8082" \
|
||||||
|
--grpc-node-a-address "http://scadalink-env2-site-x-a:8083" \
|
||||||
|
--grpc-node-b-address "http://scadalink-env2-site-x-b:8083" \
|
||||||
|
|| echo " (Site-X may already exist)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== Env2 site seeding complete ==="
|
||||||
|
echo ""
|
||||||
|
echo "Verify with: $CLI $URL $AUTH site list"
|
||||||
19
docker-env2/teardown.sh
Executable file
19
docker-env2/teardown.sh
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
echo "=== ScadaLink Env2 Docker Teardown ==="
|
||||||
|
|
||||||
|
echo "Stopping env2 application containers..."
|
||||||
|
docker compose -f "$SCRIPT_DIR/docker-compose.yml" down
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Teardown complete."
|
||||||
|
echo "Site data (SQLite DBs) and logs are preserved in node directories."
|
||||||
|
echo ""
|
||||||
|
echo "Env2 databases (ScadaLinkConfig2 / ScadaLinkMachineData2) remain on"
|
||||||
|
echo "the shared scadalink-mssql. To drop them:"
|
||||||
|
echo " docker exec scadalink-mssql /opt/mssql-tools18/bin/sqlcmd \\"
|
||||||
|
echo " -S localhost -U sa -P 'ScadaLink_Dev1#' -C \\"
|
||||||
|
echo " -Q \"DROP DATABASE ScadaLinkConfig2; DROP DATABASE ScadaLinkMachineData2;\""
|
||||||
Reference in New Issue
Block a user