Add staging volume and docker exec workflow docs

distroless has no shell, so managing packages against a running
container means exec-ing the ccc binary directly. Files being added
need to exist inside the container already, so bind-mount a host
./staging dir to /staging for that.

- docker-compose.yml: mount ./staging:/staging alongside the data volume
- README: document docker compose exec + staging workflow
This commit is contained in:
2026-08-08 16:31:34 +02:00
parent 06254e95a3
commit d821160485
4 changed files with 30 additions and 0 deletions
+2
View File
@@ -1,3 +1,5 @@
/target /target
*.db *.db
/staging/*
!/staging/.gitkeep
+25
View File
@@ -2,3 +2,28 @@
My super simple CDN built for distributing my own (text) content. My super simple CDN built for distributing my own (text) content.
## Running in Docker
```
docker compose up -d
```
The runtime image is `distroless` (no shell, no package manager, ~24MB),
so managing packages happens via `docker exec` running the `ccc` binary
directly rather than an interactive shell:
```
docker compose exec ccc /usr/local/bin/ccc create demo
```
To add a file, it needs to exist inside the container first. Drop it in
the `./staging` dir, which is bind-mounted to `/staging`:
```
cp app.js staging/
docker compose exec ccc /usr/local/bin/ccc add demo /staging/app.js 1.0.0
```
(Alternatively `docker cp` a file straight into the container if you'd
rather not use the staging mount.)
+3
View File
@@ -5,6 +5,9 @@ services:
- "8333:8333" - "8333:8333"
volumes: volumes:
- ccc-data:/data - ccc-data:/data
# Bind-mount a host dir here to stage files for `ccc add`, e.g.:
# docker compose exec ccc /usr/local/bin/ccc add demo /staging/app.js 1.0.0
- ./staging:/staging
restart: unless-stopped restart: unless-stopped
volumes: volumes:
View File