GitXplorerGitXplorer
v

docker-volume-ipfs

public
119 stars
23 forks
0 issues

Commits

List of commits on branch master.
Verified
c0da20ea0bcea240473c7d9c47904eaa3bf89a60

Update default.nix

vvdemeester committed 7 years ago
Verified
75145331459b78e52d2429a7c12d5988efe7acec

Update README

vvdemeester committed 7 years ago
Unverified
a2f4427833cc6745a63554cefb13ea1a1bf4e8c0

Merge pull request #15 from vdemeester/update-travis-script

vvdemeester committed 7 years ago
Verified
56410b186cf9dc3f752a9d46487913ae2e57a614

Add an empty test

vvdemeester committed 7 years ago
Verified
cf30c213184b8897591535929d7288de3501d547

Add codecov configuration

vvdemeester committed 7 years ago
Verified
c9c624a914ec5f38a5ca37375648da37bfbccca4

Update travis to send codecov reports

vvdemeester committed 7 years ago

README

The README file for this repository.

🐳 docker-volume-ipfs

GoDoc Build Status Go Report Card License codecov

This is an open source volume plugin that allows using an ipfs filesystem as a volume.

$ docker-volume-ipfs &
$ docker run -it --rm -v QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme:/data --volume-driver=ipfs busybox cat data
Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

Goals

The main goal is to be able to create docker volumes that are backed by the IPFS filesystem. They could be named volumes, anonymous volumes. The plugin should also work in a cluster / swarm environment (but by its nature it should be built-in).

First, let's define a "format" for creating volumes. There is two cases: docker volume create and docker run -v.

For docker volume create, it could be an option ipfs=, ipns=...

$ docker volume create --driver=ipfs --opt ipfs=QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT --name ipfs-welcome
$ docker run -v ipfs-welcome:/ipfs/welcome busybox cat /ipfs/welcome/readme
Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
# […]
# would also work with ipns
$ docker volume create --driver=ipfs --opt ipns=ipfs.io --name ipfs-io-website
$ docker run -v ipfs-io-website:/var/www/html nginx

For -v directly in docker run (a.k.a. anonymous volume), we could namespace it somehow.

# Default to ipfs
$ docker run -it --rm -v QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme:/data --volume-driver=ipfs busybox cat data
Hello and Welcome to IPFS!
# […]
$ docker run -it --rm -v $(docker volume create --driver=ipfs --opt ipns=ipfs.io):/var/www/html --volume-driver=ipfs nginx

TODO(s)

  • [ ] Use ipfs daemon API instead of making the assumption that a daemon is running and mounting ipfs using fuse
  • [ ] Support ipfs mounts (via fuse)
  • [ ] Support ipns mounts
  • [ ] Create a volume v2 plugin