Skip to content

Commit 57b76e0

Browse files
committed
docs(container): close out ADR-T-009 with Phase 9 audit & docs (ADR-T-009 Phase 9)
Land Phase 9 of ADR-T-009 by wiring the documentation, audit-trail, and CI guards that turn the preceding eight phases into a defended baseline. With this commit the ADR flips from "Proposed" to "Implemented (Phases 1–9 complete)" and the implementation-plan tracker marks every phase as Done. There are no behavioural changes to the running application; everything here is enforcement scaffolding, operator-facing prose, and the matching test/sample-file fallout. CI guards (`.github/workflows/container.yaml`): - New `lints` job (Container infra) gating the existing `test` matrix via `needs: lints`. Three independent audits run before any image is built: - `compose-baseline-no-mailcatcher` strips `# …` comments from `compose.yaml` (preserving line numbers via `awk` so error annotations point at the real source line) and greps the result for `mailcatcher|MAILER|SMTP|smtp_`. The override file is deliberately excluded — it is *expected* to mention `mailcatcher` — and the comment-stripping prevents the explanatory header in `compose.yaml` from tripping the audit. Re-introducing the dev mail sidecar into the production-shaped baseline now fails the build with a `::error file=compose.yaml::…` annotation referencing ADR-T-009 §8.1 / §9.1.3. - `su-exec-audit` parses the most recent `SHA-256:` line from the `## Audit Log` section of `contrib/dev-tools/su-exec/AUDIT.md` and compares it to `sha256sum contrib/dev-tools/su-exec/su-exec.c`. Any drift (file changed without a matching audit entry, or audit entry missing) fails the build with a pointer to ADR-T-009 §9.2 and the exact append-required SHA. Reviewer-discretionary drift is no longer possible. - `entry-env-docs` parses the `# ENTRY_ENV_VARS:` … `# END_ENTRY_ENV_VARS` manifest block in `share/container/entry_script_sh` and asserts that every variable listed appears somewhere in `docs/containers.md`. Also asserts that `compose.override.yaml` is mentioned. Adding an env var to the entry script without documenting it now fails the build (ADR-T-009 §9 / Acceptance Criterion #7). Vendoring audit (`contrib/dev-tools/su-exec/AUDIT.md`, new): - Records provenance (upstream `ncopa/su-exec`, MIT, vendored 2023-10-14 in repo commit `1f5351db`), initial SHA-256, and the choice rationale against `gosu`/`setpriv`/`su`/`runuser` (binary size on distroless, dependency footprint, and PID-1/signal preservation respectively). - Documents the two re-audit triggers — file-change (automated, the CI guard above) and CVE (manual) — and explicitly rejects a calendar trigger per ADR-T-009 §D8: static frozen C with a finite review surface does not decay with time. - Opens the append-only `## Audit Log` with the 2026-04-21 initial-audit entry: full read-through against upstream, byte-identical, no shell/network/ signal/env surprises, no findings. The entry ends with the structured `SHA-256:` line the CI guard parses. Entry-script manifest (`share/container/entry_script_sh`): - New canonical `# ENTRY_ENV_VARS:` … `# END_ENTRY_ENV_VARS` block at the top of the script enumerates every env var the script consults — including the dynamically constructed `AUTH__{PRIVATE,PUBLIC}_KEY_{PEM,PATH}` names that a naive grep of `${...}` expansions would miss. This is the single source of truth the CI lint reads; the docs/env-table is the consumer. Shipped-config consolidation (`share/default/config/`): - Drop the `.{mysql,sqlite3}.toml` suffix split for the container-shipped defaults now that Phase 5 made `database.connect_url` mandatory (the file no longer encodes a driver choice). Two pairs collapse into single files: - `index.container.{mysql,sqlite3}.toml` → `index.container.toml` (the `mysql` variant was already the canonical content; the `sqlite3` variant is removed). - `index.public.e2e.container.{mysql,sqlite3}.toml` → `index.public.e2e.container.toml` (kept the more explicit `listed = false` / `private = false` settings from the sqlite variant for clarity). - `index.private.e2e.container.sqlite3.toml` and `index.development.sqlite3.toml` lose their now-empty `[auth]` stanza (auth keys are never seeded from the shipped TOML — they come from the entry script's defaults or operator overrides). The development template additionally moves `[net.tls]` above `[tracker]` to keep all top-level sections grouped. - `packages/index-config/tests/shipped_samples.rs` follows the rename in lockstep so the samples remain exercised by the loader's parse + validate pipeline. - All four e2e runner scripts under `contrib/dev-tools/container/e2e/{mysql,sqlite/mode/public}/` point at the unified file names. Operator docs: - `docs/containers.md` gains: - a "Test-Stage Gate" section documenting the Containerfile's `test` / `test_debug` build-time test stages, the deliberate absence of a `--skip-tests` escape hatch, and the supported `#[ignore]`-then-fix escalation path. Backlinked to ADR-T-009 §D9. - a `TZ` row in the env-var table covering the Containerfile's pass-through default of `Etc/UTC`. - a pointer at the entry-script manifest block, explaining the CI contract that keeps the table and the manifest in sync. - prose updates reflecting the single `index.container.toml` default (no more `{sqlite3,mysql}` split). - `README.md`: - Container quickstart blocks now show the two mandatory overrides (`TRACKER__TOKEN`, `DATABASE__CONNECT_URL`) so a copy-paste `docker run` / `podman run` succeeds against the Phase 5 schema. A leading note explains *why* a bare invocation now fails, with a link to ADR-T-009 §D2. - New "Compose (development sandbox)" subsection introducing `make up-dev` / `make up-prod` and pointing at the Compose Split docs section. - The ADR-T-009 entry in the "Architecture Decision Records" list is rewritten to match the actually-landed scope (runtime base split, three helper crates, mandatory schema fields, Compose split, vendored-`su-exec` audit) rather than the earlier "hardening" framing. - `CHANGELOG.md`: - Expands the ADR-T-009 entry under `Added` to summarise Phases 1–9 in operator-visible terms (runtime image split with the `0700`/`0500 root:root` posture on the lean toolset, three extracted helper crates including their renames from the old `health_check` / `torrust-generate-auth-keypair` names, the Compose split with the two `make` wrappers, and the new vendoring audit + CI guard). - Three new **BREAKING** entries under `Changed` spelling out the operator-facing migrations: mandatory `database.connect_url` / `tracker.token` (with the precise override env-var names), the PEM/PATH mutual-exclusion contract on auth keys (D3), and the narrowed scope of `TORRUST_INDEX_DATABASE_DRIVER` as a first-boot TOML selector only (no longer a runtime database dispatcher). ADR & implementation plan: - `adr/009-container-infrastructure-refactor.md` status flips from "Proposed" to "Implemented (Phases 1–9 complete)". - `adr/009-implementation-plan.md` marks Phase 9 as Done, and corrects the §9 changelog-prose template: the `[net.tsl]` → `[net.tls]` wire-key rename was already logged at Phase 3 (config-crate extraction) and must not be re-stated under the Phase 9 summary bullet. The plan now calls this out inline so a future re-reader does not duplicate the entry. Repo housekeeping: - `AGENTS.md` reorders the helper-crate enumeration (`index-cli-common` to the end of the list) so the three Phase-2/6 helpers cluster together. No behavioural meaning — the share-the-`T-`-prefix rule is unchanged. Refs: ADR-T-009 §D8, §D9, §9.
1 parent d8b6ad2 commit 57b76e0

22 files changed

Lines changed: 421 additions & 105 deletions

.github/workflows/container.yaml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,90 @@ env:
1515
CARGO_TERM_COLOR: always
1616

1717
jobs:
18+
lints:
19+
name: Lints (Container infra)
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- id: checkout
24+
name: Checkout Repository
25+
uses: actions/checkout@v6
26+
27+
# Phase 9 §9.1.3 — guard against re-introducing the
28+
# `mailcatcher` dev sidecar (or any SMTP/mail config)
29+
# into the production-shaped baseline. The override
30+
# file is *expected* to mention `mailcatcher` and is
31+
# deliberately excluded from the audit. Comments are
32+
# stripped before grepping so the explanatory header
33+
# in `compose.yaml` (which legitimately references
34+
# `mailcatcher` in prose) does not trip the audit;
35+
# we are looking for live YAML config, not docs.
36+
- id: compose-baseline-no-mailcatcher
37+
name: compose.yaml has no mailcatcher / SMTP wiring
38+
run: |
39+
set -eu
40+
# awk strips `# ...` comments while preserving line
41+
# numbering 1:1 with the source file, so any error
42+
# output points the reader at the real line.
43+
if awk '{ sub(/#.*/, ""); print }' compose.yaml \
44+
| grep -nE 'mailcatcher|MAILER|SMTP|smtp_'; then
45+
echo "::error file=compose.yaml::dev mail sidecar / SMTP config present in production-shaped baseline (ADR-T-009 §8.1, §9.1.3)"
46+
exit 1
47+
fi
48+
echo "compose.yaml clean."
49+
50+
# Phase 9 §9.2 — vendored `su-exec.c` must not change
51+
# without a fresh audit entry recording the new SHA-256
52+
# in contrib/dev-tools/su-exec/AUDIT.md.
53+
- id: su-exec-audit
54+
name: su-exec audit log matches vendored source
55+
run: |
56+
set -eu
57+
audit=contrib/dev-tools/su-exec/AUDIT.md
58+
test -s "$audit"
59+
recorded=$(sed -n '/^## Audit Log/,$ { s/^SHA-256: \([0-9a-f]\{64\}\)$/\1/p; }' "$audit" | tail -1)
60+
actual=$(sha256sum contrib/dev-tools/su-exec/su-exec.c | cut -d' ' -f1)
61+
if [ -z "$recorded" ]; then
62+
echo "::error file=$audit::no SHA-256 entry found in '## Audit Log' section (ADR-T-009 §9.2)"
63+
exit 1
64+
fi
65+
if [ "$recorded" != "$actual" ]; then
66+
echo "::error file=$audit::recorded SHA-256 ($recorded) does not match contrib/dev-tools/su-exec/su-exec.c ($actual). Append a new dated audit entry per ADR-T-009 §9.2."
67+
exit 1
68+
fi
69+
echo "su-exec audit current ($actual)."
70+
71+
# Phase 9 §9 / Acceptance Criterion #7 — every env var
72+
# listed in the entry script's manifest block must be
73+
# documented in docs/containers.md.
74+
- id: entry-env-docs
75+
name: entry-script env vars documented
76+
run: |
77+
set -eu
78+
script=share/container/entry_script_sh
79+
vars=$(sed -n '/^# ENTRY_ENV_VARS:/,/^# END_ENTRY_ENV_VARS/p' "$script" \
80+
| grep -oE '[A-Z][A-Z0-9_]+' \
81+
| sort -u)
82+
if [ -z "$vars" ]; then
83+
echo "::error file=$script::ENTRY_ENV_VARS manifest block not found or empty (ADR-T-009 §9 Crit. #7)"
84+
exit 1
85+
fi
86+
missing=0
87+
for v in $vars; do
88+
grep -q "$v" docs/containers.md || {
89+
echo "::error file=docs/containers.md::env var '$v' is in the entry-script manifest but not documented"
90+
missing=1
91+
}
92+
done
93+
grep -q 'compose\.override\.yaml' docs/containers.md || {
94+
echo "::error file=docs/containers.md::two-file Compose split (compose.override.yaml) is not documented"
95+
missing=1
96+
}
97+
[ "$missing" -eq 0 ]
98+
1899
test:
19100
name: Test (Docker)
101+
needs: lints
20102
runs-on: ubuntu-latest
21103

22104
strategy:

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ use their own `ADR-<PREFIX>-<NNN>` form without the `§` prefix.
8080
| `M-` | Mudlark | `packages/mudlark/docs/idea.md` |
8181
| `R-` | render-text-as-image | `packages/render-text-as-image/` |
8282

83-
Helper crates (`index-cli-common`, `index-health-check`,
84-
`index-auth-keypair`, `index-config`, `index-config-probe`,
83+
Helper crates (`index-health-check`, `index-auth-keypair`,
84+
`index-config`, `index-config-probe`, `index-cli-common`,
8585
`index-entry-script`) are internal implementation details of
8686
the root crate and do not own separate ADRs or specification
8787
docs. They share the `T-` prefix for any cross-references

CHANGELOG.md

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12-
- ADR-T-009: Container infrastructure hardening (Phases 1, 2, 3, 4, 5 & 6).
12+
- ADR-T-009: Container infrastructure refactor (Phases 1–9). Beyond
13+
the tactical hardening already noted under Phase 3, the refactor:
14+
- Splits the runtime image into a lean `release` (distroless
15+
`cc-debian13`) and `debug` (`cc-debian13:debug`) target. The
16+
`release` image keeps `/bin/busybox`, `/bin/su-exec`, and
17+
`/usr/bin/jq` root-only (mode `0700`/`0500 root:root`); the
18+
unprivileged `torrust` user gets `EACCES` on the entire toolset
19+
after privilege drop. The `debug` target retains the upstream
20+
`/busybox/` tree on `PATH` for interactive debugging.
21+
- Extracts three helper binaries into their own workspace crates
22+
with no transitive HTTP/TLS/async-runtime dependencies:
23+
`torrust-index-health-check` (renamed from `health_check`),
24+
`torrust-index-auth-keypair` (renamed from
25+
`torrust-generate-auth-keypair`), and the new
26+
`torrust-index-config-probe` (the same loader the application
27+
uses, exposing the resolved schema/database/auth state as JSON).
28+
- Splits Compose into a production-shaped
29+
[`compose.yaml`](./compose.yaml) baseline (no `mailcatcher`, no
30+
`tty`, dev ports bound to `127.0.0.1`, credentials referenced
31+
as bare `${VAR}`) and an auto-loaded
32+
[`compose.override.yaml`](./compose.override.yaml) supplying the
33+
dev sandbox. Two `Makefile` targets (`make up-dev`, `make up-prod`)
34+
wrap the documented invocation paths and validate required env
35+
vars before any container starts.
36+
- Adds `contrib/dev-tools/su-exec/AUDIT.md` recording provenance,
37+
rationale, and a SHA-256-anchored append-only audit log for the
38+
vendored `su-exec.c`. CI fails the build when the file changes
39+
without a matching audit entry.
40+
1341
- `torrust-index-config` workspace crate (`packages/index-config/`)
1442
containing the parsing surface of the configuration system: schema
1543
modules, validator, `load_settings`, `Info`, `Error`, the
@@ -188,6 +216,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
188216

189217
### Changed
190218

219+
- **BREAKING:** `database.connect_url` and `tracker.token` are now
220+
mandatory schema fields (no defaults in shipped TOMLs). Operators
221+
must supply both via env-var override
222+
(`TORRUST_INDEX_CONFIG_OVERRIDE_DATABASE__CONNECT_URL`,
223+
`TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN`) or by mounting a
224+
populated `index.toml`. Missing values fail at config-parse time
225+
with a precise serde `missing field` error rather than silently
226+
falling back to a hidden default (ADR-T-009 §D2).
227+
- **BREAKING:** `TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__*_PEM` and
228+
`TORRUST_INDEX_CONFIG_OVERRIDE_AUTH__*_PATH` are mutually exclusive
229+
within a single key, both keys must use the same delivery
230+
mechanism, and the pair must either both be configured or both be
231+
absent. Mixed/half-pair configurations are rejected by the entry
232+
script before the application starts (ADR-T-009 §D3).
233+
- **BREAKING:** `TORRUST_INDEX_DATABASE_DRIVER` no longer dispatches
234+
the application's runtime database driver — that is derived from
235+
the URL scheme of `database.connect_url`. It is retained as an
236+
input-validation gate at container start (`sqlite3` / `mysql`);
237+
both values seed the same driver-agnostic `index.container.toml`
238+
template into `/etc/torrust/index/` on first boot. Operators who
239+
scripted around this env var to switch databases at runtime must
240+
instead supply `TORRUST_INDEX_CONFIG_OVERRIDE_DATABASE__CONNECT_URL`
241+
(ADR-T-009 §D2/§7.4).
191242
- `.containerignore` now excludes `/adr/` and `/docs/` from the build
192243
context (ADR-T-009 Phase 1).
193244
- Container `HEALTHCHECK` now invokes `torrust-index-health-check` (was

README.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,56 @@ If you are using `Version 1` of `torrust-tracker-backend`, please view our [upgr
3131

3232
### Container Version
3333

34-
The Torrust Index is [deployed to DockerHub][dockerhub], you can run a demo immediately with the following commands:
34+
The Torrust Index is [deployed to DockerHub][dockerhub], you can run a demo
35+
immediately with the following commands. Per
36+
[ADR-T-009 §D2](./adr/009-container-infrastructure-refactor.md), the image
37+
no longer ships a default tracker token or `database.connect_url`, so two
38+
overrides are mandatory at startup — a bare `docker run -it
39+
torrust/index:develop` now fails with a `missing field` error rather than
40+
booting against hidden defaults.
3541

3642
#### Docker
3743

3844
```sh
39-
docker run -it torrust/index:develop
45+
docker run -it \
46+
--env TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \
47+
--env TORRUST_INDEX_CONFIG_OVERRIDE_DATABASE__CONNECT_URL="sqlite:///var/lib/torrust/index/database/sqlite3.db?mode=rwc" \
48+
torrust/index:develop
4049
```
4150

4251
> Please read our [container guide][containers.md] for more information.
4352
4453
#### Podman
4554

4655
```sh
47-
podman run -it torrust/index:develop
56+
podman run -it \
57+
--env TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \
58+
--env TORRUST_INDEX_CONFIG_OVERRIDE_DATABASE__CONNECT_URL="sqlite:///var/lib/torrust/index/database/sqlite3.db?mode=rwc" \
59+
torrust/index:develop
4860
```
4961

5062
> Please read our [container guide][containers.md] for more information.
5163
64+
#### Compose (development sandbox)
65+
66+
For a complete local stack (index + tracker + MySQL + mailcatcher) the
67+
repository ships a Compose split: a production-shaped
68+
[`compose.yaml`](./compose.yaml) baseline plus an auto-loaded
69+
[`compose.override.yaml`](./compose.override.yaml) that supplies dev
70+
defaults. Two `Makefile` wrappers cover the documented invocation
71+
paths:
72+
73+
```sh
74+
# Dev sandbox (auto-loads compose.override.yaml):
75+
make up-dev
76+
77+
# Production-shaped (validates required credentials first):
78+
make up-prod
79+
```
80+
81+
See [Compose Split](./docs/containers.md#compose-split) in the container
82+
guide for the required env vars and the validation contract.
83+
5284
### Development Version
5385

5486
- Please assure you have the ___[latest stable (or nightly) version of Rust][Rust]___.
@@ -144,7 +176,7 @@ The following services are provided by the default configuration:
144176
- [ADR-T-006: Refactor the Error System](adr/006-error-system-refactor.md) — Replace the 41-variant `ServiceError` god enum with domain-scoped error enums (`AuthError`, `UserError`, `TorrentError`, `CategoryTagError`) and a thin `ApiError` wrapper.
145177
- [ADR-T-007: Refactor the JWT System](adr/007-jwt-system-refactor.md) — Centralise JWT handling into `src/jwt.rs`, redesign claims to RFC 7519, move to RS256 asymmetric signing, and consolidate session validation into a single code path.
146178
- [ADR-T-008: Refactor the Roles and Permissions System](adr/008-roles-and-permissions-refactor.md) — Replace Casbin with a native Rust permission system (`PermissionMatrix` + `RequirePermission<A>` Axum extractors), migrate from `administrator: bool` to a `role` column, and add a `/me/permissions` discovery endpoint.
147-
- [ADR-T-009: Container Infrastructure Hardening](adr/009-container-infrastructure-refactor.md) — Split runtime bases (release/debug), extract the configuration parser into the `torrust-index-config` workspace crate, ship dedicated helper-binary crates (`torrust-index-health-check`, `torrust-index-auth-keypair`, `torrust-index-config-probe`), and tighten the entry script's invariants (mandatory `connect_url`/`tracker.token`, single source of truth for auth-key paths, refuse-if-root, refuse-if-stdout-is-a-TTY).
179+
- [ADR-T-009: Container Infrastructure Refactor](adr/009-container-infrastructure-refactor.md) — Split the runtime image into `release` (distroless, root-only toolset) and `debug` bases; extract three helper binaries (`torrust-index-health-check`, `torrust-index-auth-keypair`, `torrust-index-config-probe`) into their own workspace crates with no HTTP/TLS/async-runtime deps; strip credentials from shipped TOMLs and make `database.connect_url` / `tracker.token` mandatory schema fields; split Compose into a production-shaped `compose.yaml` baseline plus an auto-loaded `compose.override.yaml` dev sandbox; and add an internal audit record for vendored `su-exec`.
148180

149181
## Contributing
150182

adr/009-container-infrastructure-refactor.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ADR-T-009: Container Infrastructure Refactor
22

3-
**Status:** Proposed
3+
**Status:** Implemented (Phases 1–9 complete)
44
**Date:** 2026-04-19
55
**Supersedes:** Earlier `ADR-T-009` draft ("Container
66
Infrastructure Hardening") whose tactical S-N items were

adr/009-implementation-plan.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ADR-T-009 — Implementation Plan
22

33
**Companion to:** [adr/009-container-infrastructure-refactor.md](009-container-infrastructure-refactor.md)
4-
**Status:** Tracking
4+
**Status:** Implemented (Phases 1–9 complete)
55
**Date:** 2026-04-19
66

77
This document captures the *how* of ADR-T-009. The ADR records
@@ -22,7 +22,7 @@ re-litigated here — when in doubt, defer to the ADR.
2222
| 6 | Config probe | Done |
2323
| 7 | Entry-script contract | Done |
2424
| 8 | Compose split | Done |
25-
| 9 | Documentation & audit (D8, D9) | Not started |
25+
| 9 | Documentation & audit (D8, D9) | Done |
2626

2727
## Phase Dependency Graph
2828

@@ -2661,13 +2661,16 @@ version section summarising the container infrastructure
26612661
refactor: mandatory `connect_url` / `tracker.token`,
26622662
compose split, runtime-base split, helper-crate
26632663
extractions, the new `torrust-index-config-probe`
2664-
entrypoint, the `[net.tsl]``[net.tls]` wire-key
2665-
rename (breaking change for operator TOMLs and JSON API
2666-
consumers), the PEM+PATH mutual-exclusion enforcement
2664+
entrypoint, the PEM+PATH mutual-exclusion enforcement
26672665
(D3), and the narrowed scope of
26682666
`TORRUST_INDEX_DATABASE_DRIVER` (now a TOML-selection
26692667
knob only, no longer a runtime database dispatcher).
26702668

2669+
The `[net.tsl]``[net.tls]` wire-key rename is *not*
2670+
re-stated in this Phase 9 entry — it was logged as its
2671+
own breaking-change bullet at the time it landed (Phase 3
2672+
config-crate extraction). Keep it there; do not duplicate.
2673+
26712674
### 9.1.3 Add `mailcatcher` CI lint on `compose.yaml`
26722675

26732676
Phase 8 §8.1 prescribed a CI lint that re-runs the
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
22

3-
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.mysql.toml) \
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.toml) \
44
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.public.e2e.container.sqlite3.toml) \
55
docker compose down

contrib/dev-tools/container/e2e/mysql/e2e-env-up.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/bin/bash
22

3-
TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.public.e2e.container.mysql.toml) \
3+
TORRUST_INDEX_CONFIG=$(cat ./share/default/config/index.public.e2e.container.toml) \
44
docker compose build
55

66
USER_ID=${USER_ID:-1000} \
7-
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.mysql.toml) \
7+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.toml) \
88
TORRUST_INDEX_DATABASE="torrust_index_e2e_testing" \
99
TORRUST_INDEX_DATABASE_DRIVER="mysql" \
1010
TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \

contrib/dev-tools/container/e2e/mysql/run-e2e-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ docker ps
4343
# overrides; see ADR-T-009 §D2). Inject host-side overrides so the test
4444
# process can load the same config file the container uses.
4545
TORRUST_INDEX_E2E_SHARED=true \
46-
TORRUST_INDEX_CONFIG_TOML_PATH="./share/default/config/index.public.e2e.container.mysql.toml" \
46+
TORRUST_INDEX_CONFIG_TOML_PATH="./share/default/config/index.public.e2e.container.toml" \
4747
TORRUST_INDEX_E2E_DB_CONNECT_URL="mysql://root:root_secret_password@127.0.0.1:3306/torrust_index_e2e_testing" \
4848
TORRUST_INDEX_CONFIG_OVERRIDE_TRACKER__TOKEN="MyAccessToken" \
4949
TORRUST_INDEX_CONFIG_OVERRIDE_DATABASE__CONNECT_URL="mysql://root:root_secret_password@127.0.0.1:3306/torrust_index_e2e_testing" \
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
22

3-
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.sqlite3.toml) \
3+
TORRUST_INDEX_CONFIG_TOML=$(cat ./share/default/config/index.public.e2e.container.toml) \
44
TORRUST_TRACKER_CONFIG_TOML=$(cat ./share/default/config/tracker.public.e2e.container.sqlite3.toml) \
55
docker compose down

0 commit comments

Comments
 (0)