Archived
fix(docker): include compose and persist home
This commit is contained in:
@@ -54,6 +54,7 @@ ENV NODE_ENV=production \
|
||||
COPY --from=package /usr/local/lib/node_modules /usr/local/lib/node_modules
|
||||
COPY --from=package /usr/local/bin /usr/local/bin
|
||||
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
||||
COPY --from=docker-cli /usr/local/libexec/docker/cli-plugins /usr/local/libexec/docker/cli-plugins
|
||||
COPY bin/hostexec /usr/local/bin/hostexec
|
||||
RUN chmod 0755 /usr/local/bin/hostexec
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ RUN npm ci \
|
||||
&& chmod 0777 /workspace
|
||||
|
||||
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
||||
COPY --from=docker-cli /usr/local/libexec/docker/cli-plugins /usr/local/libexec/docker/cli-plugins
|
||||
COPY docker/bin/hostexec /usr/local/bin/hostexec
|
||||
RUN chmod 0755 /usr/local/bin/hostexec
|
||||
|
||||
|
||||
+4
-2
@@ -1,4 +1,6 @@
|
||||
# PI WEB Docker
|
||||
# PI WEB Docker (beta)
|
||||
|
||||
This Docker setup is beta. It is useful for trusted local/server testing and development, but it may still have rough edges and is intentionally documented only here for now.
|
||||
|
||||
PI WEB has two Docker modes:
|
||||
|
||||
@@ -108,7 +110,7 @@ Host-derived IDs are refreshed on rerun unless you explicitly override them. Use
|
||||
|
||||
### Base image and tooling
|
||||
|
||||
The Docker runtime and development images are openSUSE Tumbleweed based by default. They install Node.js 22, npm, `npx`, and Corepack through zypper, using the openSUSE Node.js build service repository when needed for the selected architecture. The image's `pi-web` account is created with `PI_WEB_UID:PI_WEB_GID`, so shells have a passwd entry instead of showing `I have no name!` when the host user is not `1000:1000`. The image also includes common agent/development tools such as Git/Git LFS, GitHub CLI, OpenSSH, Python with pip/virtualenv and headers, native build tooling, `jq`, `ripgrep`, `fd`, `fzf`, `bat`, ShellCheck, archive tools, network utilities, and the Docker CLI.
|
||||
The Docker runtime and development images are openSUSE Tumbleweed based by default. They install Node.js 22, npm, `npx`, and Corepack through zypper, using the openSUSE Node.js build service repository when needed for the selected architecture. The image's `pi-web` account is created with `PI_WEB_UID:PI_WEB_GID` and `/data/home` as its home directory, so shells have a passwd entry instead of showing `I have no name!` while user config stays in the persistent `/data` mount. The image also includes common agent/development tools such as Git/Git LFS, GitHub CLI, OpenSSH, Python with pip/virtualenv and headers, native build tooling, `jq`, `ripgrep`, `fd`, `fzf`, `bat`, ShellCheck, archive tools, network utilities, and the Docker CLI with Compose and Buildx plugins.
|
||||
|
||||
Install extra distro packages without writing a hook by setting a whitespace-delimited package list:
|
||||
|
||||
|
||||
@@ -138,6 +138,9 @@ esac
|
||||
|
||||
runtime_user=pi-web
|
||||
runtime_group=pi-web
|
||||
runtime_home=/data/home
|
||||
mkdir -p "$runtime_home" /data/config /data/npm-cache /data/pi-web /data/pi-agent /workspace
|
||||
|
||||
if getent group "$runtime_gid" >/dev/null 2>&1; then
|
||||
runtime_group=$(getent group "$runtime_gid" | cut -d: -f1)
|
||||
elif getent group "$runtime_group" >/dev/null 2>&1; then
|
||||
@@ -147,13 +150,12 @@ else
|
||||
fi
|
||||
|
||||
if id "$runtime_user" >/dev/null 2>&1; then
|
||||
usermod --non-unique --uid "$runtime_uid" --gid "$runtime_group" --home "/home/$runtime_user" --shell /bin/bash "$runtime_user"
|
||||
usermod --non-unique --uid "$runtime_uid" --gid "$runtime_group" --home "$runtime_home" --shell /bin/bash "$runtime_user"
|
||||
else
|
||||
useradd --non-unique --uid "$runtime_uid" --gid "$runtime_group" --create-home --home-dir "/home/$runtime_user" --shell /bin/bash "$runtime_user"
|
||||
useradd --non-unique --uid "$runtime_uid" --gid "$runtime_group" --no-create-home --home-dir "$runtime_home" --shell /bin/bash "$runtime_user"
|
||||
fi
|
||||
|
||||
mkdir -p /data/home /data/config /data/npm-cache /data/pi-web /data/pi-agent /workspace "/home/$runtime_user"
|
||||
chown -R "$runtime_uid:$runtime_gid" /data /workspace "/home/$runtime_user"
|
||||
chown -R "$runtime_uid:$runtime_gid" /data /workspace
|
||||
|
||||
zypper clean --all
|
||||
rm -rf /var/cache/zypp/*
|
||||
|
||||
Reference in New Issue
Block a user