Permalink
Cannot retrieve contributors at this time
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
119 lines (106 sloc)
4.2 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| version: '3.4' | |
| # This is an example docker-compose file to quickly test an IPFS Cluster | |
| # with multiple peers on a contained environment. | |
| # It runs 3 cluster peers (cluster0, cluster1...) attached to go-ipfs daemons | |
| # (ipfs0, ipfs1...) using the CRDT consensus component. Cluster peers | |
| # autodiscover themselves using mDNS on the docker internal network. | |
| # | |
| # To interact with the cluster use "ipfs-cluster-ctl" (the cluster0 API port is | |
| # exposed to the locahost. You can also "docker exec -ti cluster0 sh" and run | |
| # it from the container. "ipfs-cluster-ctl peers ls" should show all 3 peers a few | |
| # seconds after start. | |
| # | |
| # For persistence, a "compose" folder is created and used to store configurations | |
| # and states. This can be used to edit configurations in subsequent runs. It looks | |
| # as follows: | |
| # | |
| # compose/ | |
| # |-- cluster0 | |
| # |-- cluster1 | |
| # |-- ... | |
| # |-- ipfs0 | |
| # |-- ipfs1 | |
| # |-- ... | |
| # | |
| # During the first start, default configurations are created for all peers. | |
| services: | |
| ################################################################################## | |
| ## Cluster PEER 0 ################################################################ | |
| ################################################################################## | |
| ipfs0: | |
| container_name: ipfs0 | |
| image: ipfs/go-ipfs:latest | |
| # ports: | |
| # - "4001:4001" # ipfs swarm - expose if needed/wanted | |
| # - "5001:5001" # ipfs api - expose if needed/wanted | |
| # - "8080:8080" # ipfs gateway - expose if needed/wanted | |
| volumes: | |
| - ./compose/ipfs0:/data/ipfs | |
| cluster0: | |
| container_name: cluster0 | |
| image: ipfs/ipfs-cluster:latest | |
| depends_on: | |
| - ipfs0 | |
| environment: | |
| CLUSTER_PEERNAME: cluster0 | |
| CLUSTER_SECRET: ${CLUSTER_SECRET} # From shell variable if set | |
| CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs0/tcp/5001 | |
| CLUSTER_CRDT_TRUSTEDPEERS: '*' # Trust all peers in Cluster | |
| CLUSTER_RESTAPI_HTTPLISTENMULTIADDRESS: /ip4/0.0.0.0/tcp/9094 # Expose API | |
| CLUSTER_MONITORPINGINTERVAL: 2s # Speed up peer discovery | |
| ports: | |
| # Open API port (allows ipfs-cluster-ctl usage on host) | |
| - "127.0.0.1:9094:9094" | |
| # The cluster swarm port would need to be exposed if this container | |
| # was to connect to cluster peers on other hosts. | |
| # But this is just a testing cluster. | |
| # - "9095:9095" # Cluster IPFS Proxy endpoint | |
| # - "9096:9096" # Cluster swarm endpoint | |
| volumes: | |
| - ./compose/cluster0:/data/ipfs-cluster | |
| ################################################################################## | |
| ## Cluster PEER 1 ################################################################ | |
| ################################################################################## | |
| # See Cluster PEER 0 for comments (all removed here and below) | |
| ipfs1: | |
| container_name: ipfs1 | |
| image: ipfs/go-ipfs:latest | |
| volumes: | |
| - ./compose/ipfs1:/data/ipfs | |
| cluster1: | |
| container_name: cluster1 | |
| image: ipfs/ipfs-cluster:latest | |
| depends_on: | |
| - ipfs1 | |
| environment: | |
| CLUSTER_PEERNAME: cluster1 | |
| CLUSTER_SECRET: ${CLUSTER_SECRET} | |
| CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs1/tcp/5001 | |
| CLUSTER_CRDT_TRUSTEDPEERS: '*' | |
| CLUSTER_MONITORPINGINTERVAL: 2s # Speed up peer discovery | |
| volumes: | |
| - ./compose/cluster1:/data/ipfs-cluster | |
| ################################################################################## | |
| ## Cluster PEER 2 ################################################################ | |
| ################################################################################## | |
| # See Cluster PEER 0 for comments (all removed here and below) | |
| ipfs2: | |
| container_name: ipfs2 | |
| image: ipfs/go-ipfs:latest | |
| volumes: | |
| - ./compose/ipfs2:/data/ipfs | |
| cluster2: | |
| container_name: cluster2 | |
| image: ipfs/ipfs-cluster:latest | |
| depends_on: | |
| - ipfs2 | |
| environment: | |
| CLUSTER_PEERNAME: cluster2 | |
| CLUSTER_SECRET: ${CLUSTER_SECRET} | |
| CLUSTER_IPFSHTTP_NODEMULTIADDRESS: /dns4/ipfs2/tcp/5001 | |
| CLUSTER_CRDT_TRUSTEDPEERS: '*' | |
| CLUSTER_MONITORPINGINTERVAL: 2s # Speed up peer discovery | |
| volumes: | |
| - ./compose/cluster2:/data/ipfs-cluster | |
| # For adding more peers, copy PEER 1 and rename things to ipfs2, cluster2. | |
| # Keep bootstrapping to cluster0. |