External Docker volumes
This article refers to Platform v3.1.0. The current Platform version is v3.2.0.
Overview
An external volume is a Docker-managed volume that exists independently of any compose stack. You create it once — manually, with docker volume create locally or via the Docker Volumes card on a Barbara edge node — and several different apps can mount it. This makes external volumes the natural choice for data shared between independent apps, or data that must outlive the app that wrote it.
Watch this step on YouTube: Persistent Folders — External Volumes.
Internal vs external volumes
| Feature | Internal volumes | External volumes |
|---|---|---|
| Created by | Compose / docker run automatically | Manually with docker volume create, or via the Barbara Docker Volumes card |
| Managed by Docker | ✓ | ✓ |
| Must exist before the stack starts | ✗ | ✓ |
| Best for | Storage for a single app | Storage shared between apps or outliving any single app |
Pick internal volumes when only one stack ever touches the data; pick external volumes when several do.
Compose syntax
version: "3.9"
services:
filebrowser:
image: filebrowser/filebrowser
container_name: filebrowser
ports:
- "8080:80"
volumes:
- my_external_volume:/srv
restart: unless-stopped
volumes:
my_external_volume:
external: true
name: my_external_volume
- The
external: trueflag tells Compose the volume already exists and not to create it. - The volume must already be defined on the host before
docker-compose upruns.
Practice 1 — external volume locally
1. Create the volume
docker volume create my_external_volume
docker volume ls
2. Write the compose file
Same as the snippet above. Save it as docker-compose.yaml.
3. Start the stack
docker-compose up -d
4. Use Filebrowser
Open http://localhost:8080. Files you upload land in my_external_volume.
🔑 Default Filebrowser credentials are admin / admin — you can change them under Settings → Users.
5. Inspect the volume
docker volume inspect my_external_volume
6. Tear it down
docker-compose down
The volume stays even after the stack is down. To remove it:
docker volume rm my_external_volume
You must stop every container that mounts the volume before you can delete it.
Practice 2 — external volume on a Barbara edge node
The Barbara workflow is the same idea, with Panel surfaces taking the role of the CLI commands.
1. Zip the compose file
zip -r filebrowser_app.zip ./
2. Upload to the App Library
In Barbara Panel, open the App Library, create a Docker application named filebrowser if it does not exist, and upload filebrowser_app.zip as a new version.
3. Create the external volume on the node
On the Node Details page, open the Docker Volumes card and click the + action. Name the volume my_external_volume. See Docker Volumes for the full reference of the card.
4. Deploy the app
On the Node Details page, click Add card → Application and pick filebrowser. Compose finds the pre-existing external volume and mounts it.
5. Use the app
Open http://<NODE_IP>:8080. Upload some files.
6. Verify persistence
Stop the workload from its card, then start it again. The data stays.
7. Tear it down
Uninstall the app from its workload card. Then go back to the Docker Volumes card and delete my_external_volume — only then is the data actually gone.
Summary
External volumes are the right choice when several apps need to read or write the same data, or when the data must outlive any single app. They cost one extra step at creation time but make ownership of the data explicit and independent of the apps that use it.