Description
On first run, setup.sh creates ~/.continuum/grid/ (line 40) but never creates ~/.continuum/config.env as a file. When docker compose up runs, Docker sees the bind mount:
volumes:
- ~/.continuum/config.env:/root/.continuum/config.env:ro
Since config.env doesn't exist, Docker auto-creates it as a directory. The widget-server container then fails:
Error response from daemon: error mounting ".../config.env" to rootfs at "/root/.continuum/config.env":
not a directory: Are you trying to mount a directory onto a file (or vice-versa)?
Once Docker creates it as a directory, subsequent docker compose up calls keep failing even after fixing it — you need docker compose down first to clear the cached mount.
Workaround
rmdir ~/.continuum/config.env # remove the directory Docker created
echo "# Continuum config" > ~/.continuum/config.env # create as file
docker compose down && docker compose up -d
Suggested Fix
In setup.sh, after mkdir -p "$HOME/.continuum/grid" (line 40), add:
# Ensure config.env exists as a file (Docker bind-mount creates it as dir otherwise)
touch "$HOME/.continuum/config.env"
Secondary Issue
The TS_AUTHKEY variable uses :? (required) syntax in docker-compose.yml line 202:
- TS_AUTHKEY=${TS_AUTHKEY:?Set TS_AUTHKEY in .env or ~/.continuum/config.env}
Even though the tailscale service has profiles: ["grid"], Docker Compose still interpolates all variables during parsing, causing a hard error when TS_AUTHKEY is unset — even for non-grid users. This should use ${TS_AUTHKEY:-} (default to empty) instead, since the service won't run without the grid profile anyway.
Environment
- Windows 11 Home
- Git Bash (MSYS2)
- Docker Desktop 29.3.1
- Docker Compose v5.1.1
Description
On first run,
setup.shcreates~/.continuum/grid/(line 40) but never creates~/.continuum/config.envas a file. Whendocker compose upruns, Docker sees the bind mount:Since
config.envdoesn't exist, Docker auto-creates it as a directory. The widget-server container then fails:Once Docker creates it as a directory, subsequent
docker compose upcalls keep failing even after fixing it — you needdocker compose downfirst to clear the cached mount.Workaround
Suggested Fix
In
setup.sh, aftermkdir -p "$HOME/.continuum/grid"(line 40), add:Secondary Issue
The
TS_AUTHKEYvariable uses:?(required) syntax indocker-compose.ymlline 202:- TS_AUTHKEY=${TS_AUTHKEY:?Set TS_AUTHKEY in .env or ~/.continuum/config.env}Even though the
tailscaleservice hasprofiles: ["grid"], Docker Compose still interpolates all variables during parsing, causing a hard error whenTS_AUTHKEYis unset — even for non-grid users. This should use${TS_AUTHKEY:-}(default to empty) instead, since the service won't run without the grid profile anyway.Environment