Simplify state persistence
Use use local ./data directory instead of XDG directories.
This commit is contained in:
parent
c3e9e2b40b
commit
39edc252f0
4 changed files with 3 additions and 21 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
data
|
||||||
|
|
@ -9,7 +9,7 @@ the host.
|
||||||
- Arch Linux–based image
|
- Arch Linux–based image
|
||||||
- Runs as the host user (same username, UID, GID)
|
- Runs as the host user (same username, UID, GID)
|
||||||
- Mounts only the current project directory (same absolute path inside container)
|
- Mounts only the current project directory (same absolute path inside container)
|
||||||
- Persists OpenCode state via XDG directories
|
- Persists OpenCode state in ./data directory
|
||||||
- No access to SSH keys, passwords, or full `$HOME`
|
- No access to SSH keys, passwords, or full `$HOME`
|
||||||
- Simple shell function (`opencode`) to launch interactively
|
- Simple shell function (`opencode`) to launch interactively
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,7 @@ services:
|
||||||
tty: true
|
tty: true
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
XDG_DATA_HOME: "${XDG_DATA_HOME}"
|
HOME: "${PWD}/data"
|
||||||
XDG_CONFIG_HOME: "${XDG_CONFIG_HOME}"
|
|
||||||
XDG_STATE_HOME: "${XDG_STATE_HOME}"
|
|
||||||
XDG_CACHE_HOME: "${XDG_CACHE_HOME}"
|
|
||||||
UID: "${UID}"
|
UID: "${UID}"
|
||||||
GID: "${GID}"
|
GID: "${GID}"
|
||||||
|
|
||||||
|
|
@ -26,12 +23,6 @@ services:
|
||||||
# Current project (read–write)
|
# Current project (read–write)
|
||||||
- "${PWD}:${PWD}"
|
- "${PWD}:${PWD}"
|
||||||
|
|
||||||
# OpenCode persistence (host directories, writable)
|
|
||||||
- "${XDG_DATA_HOME}/opencode:${XDG_DATA_HOME}/opencode"
|
|
||||||
- "${XDG_CONFIG_HOME}/opencode:${XDG_CONFIG_HOME}/opencode"
|
|
||||||
- "${XDG_STATE_HOME}/opencode:${XDG_STATE_HOME}/opencode"
|
|
||||||
- "${XDG_CACHE_HOME}/opencode:${XDG_CACHE_HOME}/opencode"
|
|
||||||
|
|
||||||
cap_drop:
|
cap_drop:
|
||||||
- ALL
|
- ALL
|
||||||
security_opt:
|
security_opt:
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,9 @@
|
||||||
OPENCODE_CONTAINER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
|
OPENCODE_CONTAINER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
|
||||||
|
|
||||||
opencode() {
|
opencode() {
|
||||||
# Set defaults if not already defined
|
|
||||||
: "${XDG_DATA_HOME:=$HOME/.local/share}"
|
|
||||||
: "${XDG_CONFIG_HOME:=$HOME/.config}"
|
|
||||||
: "${XDG_STATE_HOME:=$HOME/.local/state}"
|
|
||||||
: "${XDG_CACHE_HOME:=$HOME/.cache}"
|
|
||||||
|
|
||||||
UID=$(id -u) \
|
UID=$(id -u) \
|
||||||
GID=$(id -g) \
|
GID=$(id -g) \
|
||||||
USER=$(whoami) \
|
USER=$(whoami) \
|
||||||
XDG_DATA_HOME="$XDG_DATA_HOME" \
|
|
||||||
XDG_CONFIG_HOME="$XDG_CONFIG_HOME" \
|
|
||||||
XDG_STATE_HOME="$XDG_STATE_HOME" \
|
|
||||||
XDG_CACHE_HOME="$XDG_CACHE_HOME" \
|
|
||||||
docker compose \
|
docker compose \
|
||||||
-f "$OPENCODE_CONTAINER_DIR/docker-compose.yaml" \
|
-f "$OPENCODE_CONTAINER_DIR/docker-compose.yaml" \
|
||||||
run --rm \
|
run --rm \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue