mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
fix(docker): let SELinux hosts read the bind-mounted checkout (#1391)
Allow the Docker checkout bind mount on SELinux hosts. Contribution by @anilguvenc.
This commit is contained in:
1 parent
76311e36d4
commit
2a17491c8b
5 files changed
+15
-1
No files matched your search
@@ -207,6 +207,8 @@ env UID=1026 GID=100 docker compose up -d
|
|||||||
|
|
||||||
Keep the `env`: bash treats `UID` as read-only, so a plain `UID=1026` in front of a command is silently ignored. If the container can't write the checkout, it says so at start. Docker Desktop on macOS and Windows maps ownership for you.
|
Keep the `env`: bash treats `UID` as read-only, so a plain `UID=1026` in front of a command is silently ignored. If the container can't write the checkout, it says so at start. Docker Desktop on macOS and Windows maps ownership for you.
|
||||||
|
|
||||||
|
On SELinux hosts (Fedora, RHEL), compose mounts the checkout with `:z` so the container may read it; Docker may relabel the checkout for container access, which can take a moment on a large checkout. Without that, the start fails with `Cannot find module '/app/scripts/docker-start.mjs'`.
|
||||||
|
|
||||||
Behind a reverse proxy, put your keys in `.env` or pass them as environment variables - Provider Settings refuses proxied requests on purpose - and add the hostname you serve it on, for example `GEV_ALLOWED_HOSTS=globe.example.lan` (see [Sharing an instance](#-sharing-an-instance)).
|
Behind a reverse proxy, put your keys in `.env` or pass them as environment variables - Provider Settings refuses proxied requests on purpose - and add the hostname you serve it on, for example `GEV_ALLOWED_HOSTS=globe.example.lan` (see [Sharing an instance](#-sharing-an-instance)).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
- Start the Docker install on SELinux hosts such as Fedora and RHEL. Compose now
|
||||||
|
mounts the checkout with `:z`; without it the container could not read `/app`
|
||||||
|
and stopped with "Cannot find module '/app/scripts/docker-start.mjs'"
|
||||||
|
(Anıl Güvenç, @anilguvenc, #1391).
|
||||||
+4
-1
@@ -22,5 +22,8 @@ services:
|
|||||||
# UI land in the .env on your host instead of vanishing with the
|
# UI land in the .env on your host instead of vanishing with the
|
||||||
# container. node_modules stays in the image: sharp and friends are
|
# container. node_modules stays in the image: sharp and friends are
|
||||||
# compiled for Linux and must not be shadowed by a host install.
|
# compiled for Linux and must not be shadowed by a host install.
|
||||||
- .:/app
|
# `:z` relabels the checkout for containers on SELinux hosts (Fedora,
|
||||||
|
# RHEL); without it the container cannot read /app at all and Node
|
||||||
|
# reports the launcher as "Cannot find module". Elsewhere it is ignored.
|
||||||
|
- .:/app:z
|
||||||
- /app/node_modules
|
- /app/node_modules
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
# God's Eye View Current State
|
# God's Eye View Current State
|
||||||
|
|
||||||
|
Docker Compose mounts the checkout with the shared SELinux `:z` label so
|
||||||
|
containers can read it on enforcing SELinux hosts. The separate image-owned
|
||||||
|
`node_modules` volume and loopback-only port publishing remain unchanged.
|
||||||
|
|
||||||
Aircraft detection candidates reuse normalized display text until callsign or
|
Aircraft detection candidates reuse normalized display text until callsign or
|
||||||
registration changes, including in-place enrichment. Each candidate resolves its
|
registration changes, including in-place enrichment. Each candidate resolves its
|
||||||
fleet model once per collection. Positions, model ownership and tracked-aircraft
|
fleet model once per collection. Positions, model ownership and tracked-aircraft
|
||||||
|
|||||||
@@ -75,4 +75,5 @@ test('the Docker install path keeps its loopback-only, launcher-owned contract',
|
|||||||
assert.match(compose, /^\s+- GEV_KEY_SETUP_TRUSTED_PEERS$/m, 'the operator policy reaches the launcher without a hard-coded address');
|
assert.match(compose, /^\s+- GEV_KEY_SETUP_TRUSTED_PEERS$/m, 'the operator policy reaches the launcher without a hard-coded address');
|
||||||
assert.match(compose, /^\s+- GEV_ALLOWED_HOSTS$/m, 'the host allowlist reaches Vite');
|
assert.match(compose, /^\s+- GEV_ALLOWED_HOSTS$/m, 'the host allowlist reaches Vite');
|
||||||
assert.doesNotMatch(compose, /network_mode/, 'the container keeps its own network namespace');
|
assert.doesNotMatch(compose, /network_mode/, 'the container keeps its own network namespace');
|
||||||
|
assert.match(compose, /^\s+- \.:\/app:z$/m, 'SELinux hosts can read the bind-mounted checkout');
|
||||||
});
|
});
|
||||||
Reference in new issue
Block a user