Printer assignment end to end, and a container that keeps a site's files
Assign printers to a MACHINE and let whichever PC controls it install them, with the observed half kept strictly apart from the assigned half: a collector report can never write an assignment row. Adoption is explicit. Adds a singular relationship type so defaultprinter can mean exactly one, client scripts that converge a bay's queues and correct a drifted one in place, and a wave gate so a fleet-wide driver rollout cannot stampede its own share. On the container side: the compose stack never persisted the instance directory, so a rebuild discarded plugins.json and every upload. It is a volume now, the image ships instance/ owned by the app user so the mountpoint is writable, and the database moves to MySQL 8.4 LTS, which the Windows runbook has recommended since 8.0 went end of life. The image also could not build at all: the frontend stage never copied the plugin staging script it runs. Adds a topology migration guide covering IIS to Docker and back.
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mysql:8.0
|
||||
image: mysql:8.4
|
||||
# utf8mb4 server-wide so the auto-created MYSQL_DATABASE is utf8mb4, not the
|
||||
# image default. Keeps every site's schema on the same charset/collation.
|
||||
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||
@@ -36,7 +36,12 @@ services:
|
||||
ports:
|
||||
- "127.0.0.1:${MYSQL_PORT:-3306}:3306"
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
||||
# 127.0.0.1, not localhost: localhost means the unix socket, and the
|
||||
# entrypoint's init pass answers on the socket while running the server
|
||||
# with --skip-networking. A socket ping therefore reports healthy DURING
|
||||
# init, and the api/migrate services start against a server that is about
|
||||
# to restart. Over TCP the probe stays red until the real server listens.
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -60,6 +65,15 @@ services:
|
||||
- "${API_PORT:-5001}:5001"
|
||||
volumes:
|
||||
- ./plugins:/app/plugins:ro
|
||||
# /app/instance is WRITTEN state, not code: plugins.json (which plugins
|
||||
# this site has enabled), uploaded floor plans, branding, model and
|
||||
# application images, employee photos, warranty proofs, slides,
|
||||
# printed-part files, and the Dell OAuth token. Without this volume a
|
||||
# `docker compose build api && up -d api` recreates the container and
|
||||
# takes all of it with it, so the site comes back with its plugins
|
||||
# disabled and MySQL rows pointing at files that no longer exist.
|
||||
- instance_data:/app/instance
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
instance_data:
|
||||
|
||||
Reference in New Issue
Block a user