# Dedicated, DISPOSABLE SQL Server for the Sql driver's blackhole / frozen-peer live gate. # # ── SAFETY ───────────────────────────────────────────────────────────────────── # This stack owns its OWN mssql container, `otopcua-sql-blackhole`, on host port # 14333. The blackhole gate `docker pause`s THIS container by that hard-coded name. # It is NOT — and must never be — the rig's shared always-on SQL Server, which is # `10.100.0.35,14330` and hosts ConfigDb for the whole dev rig. Two independent # guardrails keep them apart: # 1. a distinct container_name (`otopcua-sql-blackhole`) — the pause target is a # compile-time constant in the test, and the shared server is not named this; and # 2. a distinct host port (14333, not 14330) — the test SKIPS LOUDLY if its # endpoint resolves to port 14330. # `restart: "no"` so a paused/killed container stays down rather than respawning. # # ── DEPLOY (from this VM; docker runs on the shared Linux host) ────────────────── # lmxopcua-fix sync sql-blackhole # rsync this Docker/ dir → /opt/otopcua-sql-blackhole/ # lmxopcua-fix up sql-blackhole # single-service stack (+ one-shot seed), no profile arg # `lmxopcua-fix` applies the host-side `project=lmxopcua` label; the explicit label # below keeps the stack discoverable even when brought up with plain `docker compose`. # # The one-shot `mssql-seed` service applies seed.sql once the server is healthy, so # the stack is self-seeding. The blackhole test ALSO seeds defensively on connect # (create-if-missing, same schema), so a stack that never ran the seed still works. name: otopcua-sql-blackhole services: mssql: image: mcr.microsoft.com/mssql/server:2022-latest container_name: otopcua-sql-blackhole labels: project: lmxopcua restart: "no" environment: ACCEPT_EULA: "Y" # Dev-only sandbox password for a throwaway container. Override via the shell env # (the same value the test reads from SQL_BLACKHOLE_PASSWORD). MSSQL_SA_PASSWORD: "${SQL_BLACKHOLE_SA_PASSWORD:-Blackhole_dev_pw1}" MSSQL_PID: "Developer" ports: - "14333:1433" healthcheck: # -C trusts the self-signed dev cert; the login succeeding is the readiness signal. test: - "CMD-SHELL" - "/opt/mssql-tools18/bin/sqlcmd -C -S localhost -U sa -P \"$${MSSQL_SA_PASSWORD}\" -Q 'SELECT 1' || exit 1" interval: 10s timeout: 5s retries: 12 start_period: 30s # One-shot seed: waits for the server to pass its healthcheck, applies seed.sql, exits. mssql-seed: image: mcr.microsoft.com/mssql/server:2022-latest labels: project: lmxopcua restart: "no" depends_on: mssql: condition: service_healthy environment: MSSQL_SA_PASSWORD: "${SQL_BLACKHOLE_SA_PASSWORD:-Blackhole_dev_pw1}" volumes: - ./seed.sql:/seed.sql:ro entrypoint: - "/bin/bash" - "-c" - "/opt/mssql-tools18/bin/sqlcmd -C -S mssql -U sa -P \"$${MSSQL_SA_PASSWORD}\" -i /seed.sql"