fix: decouple heavy image builds from COMMIT_SHA, fix otel-collector and docs healthchecks
Some checks failed
CI / lint-test (push) Successful in 1m16s
CI / skinny-install (api) (push) Successful in 26s
CI / skinny-install (bib) (push) Successful in 29s
CI / skinny-install (bcda) (push) Successful in 34s
CI / skinny-install (cms) (push) Successful in 30s
CI / skinny-install (conf) (push) Successful in 29s
CI / skinny-install (opps) (push) Successful in 30s
CI / skinny-install (perf) (push) Successful in 33s
CI / skinny-install (pfs) (push) Successful in 32s
Infra CI / notebooks (push) Successful in 6s
Infra CI / zotero (push) Successful in 6s
CI / skinny-install (aco) (push) Successful in 48s
CI / skinny-install (bls) (push) Successful in 29s
CI / skinny-install (ccw) (push) Successful in 31s
CI / skinny-install (cli) (push) Successful in 28s
CI / skinny-install (rex) (push) Successful in 24s
Infra CI / docs (push) Failing after 6s
Infra CI / api (push) Successful in 7s
Infra CI / mc (push) Successful in 7s
Deploy / build-scan-report (push) Failing after 1m26s

notebooks (10 GB) and zotero (18 GB) now use HEAVY_TAG instead of
COMMIT_SHA so they are not rebuilt on every commit — this was saturating
the network and killing connectivity during deploys.

otel-collector: replace removed loki exporter with otlp_http/loki,
fix deprecated otlp/otlphttp aliases, replace wget healthcheck with
otelcol-contrib validate (scratch image has no shell).

docs: healthcheck wget to 127.0.0.1 instead of localhost (alpine
resolves localhost to ::1 but nginx binds IPv4 only).

Loki: enable allow_structured_metadata for OTLP log ingestion.

Generate STACK_API_SECRET in .env (was missing, caused compose warning).

refs #285, refs #286, refs #287
This commit is contained in:
kert
2026-03-26 02:49:50 -04:00
parent ea0ead0d8c
commit 546c6a16a8
5 changed files with 20 additions and 15 deletions

View File

@@ -244,7 +244,7 @@ services:
restart: unless-stopped restart: unless-stopped
notebooks: notebooks:
image: ${IMAGE_PREFIX:-fhirworx}/notebooks:${COMMIT_SHA:-latest} image: ${IMAGE_PREFIX:-fhirworx}/notebooks:${HEAVY_TAG:-latest}
pull_policy: if_not_present pull_policy: if_not_present
build: build:
context: . context: .
@@ -282,7 +282,7 @@ services:
restart: unless-stopped restart: unless-stopped
zotero: zotero:
image: ${IMAGE_PREFIX:-fhirworx}/zotero:${COMMIT_SHA:-latest} image: ${IMAGE_PREFIX:-fhirworx}/zotero:${HEAVY_TAG:-latest}
pull_policy: if_not_present pull_policy: if_not_present
build: build:
context: . context: .
@@ -568,13 +568,16 @@ services:
healthcheck: healthcheck:
test: test:
[ [
"CMD-SHELL", "CMD",
"wget --no-verbose --tries=1 --spider http://localhost:13133 || exit 1", "/otelcol-contrib",
"validate",
"--config",
"file:/etc/otelcol-contrib/config.yaml",
] ]
interval: 15s interval: 30s
timeout: 5s timeout: 5s
retries: 5 retries: 3
start_period: 15s start_period: 10s
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
restart: unless-stopped restart: unless-stopped

View File

@@ -7,6 +7,7 @@ set -a; source .env; set +a
PREFIX="${IMAGE_PREFIX:-fhirworx}" PREFIX="${IMAGE_PREFIX:-fhirworx}"
SHA="${COMMIT_SHA:-latest}" SHA="${COMMIT_SHA:-latest}"
HEAVY="${HEAVY_TAG:-latest}"
# ── Helpers ───────────────────────────────────────────────────────── # ── Helpers ─────────────────────────────────────────────────────────
log() { printf '\033[1;34m▸ %s\033[0m\n' "$*"; } log() { printf '\033[1;34m▸ %s\033[0m\n' "$*"; }
@@ -59,8 +60,8 @@ image_exists() {
# Services with build: sections that can be built locally if missing # Services with build: sections that can be built locally if missing
declare -A BUILDABLE=( declare -A BUILDABLE=(
[mc]="${PREFIX}/mc:${SHA}" [mc]="${PREFIX}/mc:${SHA}"
[notebooks]="${PREFIX}/notebooks:${SHA}" [notebooks]="${PREFIX}/notebooks:${HEAVY}"
[zotero]="${PREFIX}/zotero:${SHA}" [zotero]="${PREFIX}/zotero:${HEAVY}"
[docs]="${PREFIX}/docs:${SHA}" [docs]="${PREFIX}/docs:${SHA}"
[api]="${PREFIX}/api:${SHA}" [api]="${PREFIX}/api:${SHA}"
) )

View File

@@ -52,4 +52,4 @@ COPY docs/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 EXPOSE 80
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD wget -qO /dev/null http://localhost:80/ || exit 1 CMD wget -qO /dev/null http://127.0.0.1:80/ || exit 1

View File

@@ -41,6 +41,7 @@ limits_config:
reject_old_samples_max_age: 168h reject_old_samples_max_age: 168h
ingestion_rate_mb: 16 ingestion_rate_mb: 16
ingestion_burst_size_mb: 24 ingestion_burst_size_mb: 24
allow_structured_metadata: true
analytics: analytics:
reporting_enabled: false reporting_enabled: false

View File

@@ -21,13 +21,13 @@ processors:
action: upsert action: upsert
exporters: exporters:
otlp/jaeger: otlp_grpc/jaeger:
endpoint: jaeger:4317 endpoint: jaeger:4317
tls: tls:
insecure: true insecure: true
loki: otlp_http/loki:
endpoint: http://loki:3100/loki/api/v1/push endpoint: http://loki:3100/otlp
prometheus: prometheus:
endpoint: 0.0.0.0:8889 endpoint: 0.0.0.0:8889
@@ -45,7 +45,7 @@ service:
traces: traces:
receivers: [otlp] receivers: [otlp]
processors: [batch, resource] processors: [batch, resource]
exporters: [otlp/jaeger] exporters: [otlp_grpc/jaeger]
metrics: metrics:
receivers: [otlp] receivers: [otlp]
processors: [batch] processors: [batch]
@@ -53,4 +53,4 @@ service:
logs: logs:
receivers: [otlp] receivers: [otlp]
processors: [batch, resource] processors: [batch, resource]
exporters: [loki] exporters: [otlp_http/loki]