Skip to main content

External Docker volumes

This article refers to Platform v3.1.0. The current Platform version is v3.4.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.

Video walkthrough

Watch this step on YouTube: Persistent Folders — External Volumes.

Internal vs external volumes​

FeatureInternal volumesExternal volumes
Created byCompose / docker run automaticallyManually with docker volume create, or via the Barbara Docker Volumes card
Managed by Docker✓✓
Must exist before the stack starts✗✓
Best forStorage for a single appStorage 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: true flag tells Compose the volume already exists and not to create it.
  • The volume must already be defined on the host before docker-compose up runs.

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
warning

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.