在Docker环境中设置IPFS群集

Sub*_*kar 5 docker ipfs

我正在尝试使用docker设置2节点专用IPFS群集。为此,我正在使用ipfs/ipfs-cluster:latest图像。

我的docker-compose文件如下所示:

version: '3'
services:
  peer-1:
    image: ipfs/ipfs-cluster:latest
    ports:
      - 8080:8080
      - 4001:4001
      - 5001:5001
    volumes:
      - ./cluster/peer1/config:/data/ipfs-cluster
  peer-2:
    image: ipfs/ipfs-cluster:latest
    ports:
      - 8081:8080
      - 4002:4001
      - 5002:5001
    volumes:
      - ./cluster/peer2/config:/data/ipfs-cluster
Run Code Online (Sandbox Code Playgroud)

启动容器时出现以下错误

ERROR   ipfshttp: error posting to IPFS: Post http://127.0.0.1:5001/api/v0/repo/stat?size-only=true: dial tcp 127.0.0.1:5001: connect: connection refused ipfshttp.go:745
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 请帮助解决问题。

是否有关于如何在docker上设置IPFS集群的适当文档。文档缺少许多细节。

谢谢。

Sub*_*kar 5

我弄清楚了如何在 docker 环境中运行多节点 IPFS 集群。当前版本 0.4.17中ipfs/ipfs-cluster不运行 ipfs Peer ie 。ipfs/go-ipfs我们需要单独运行它。

因此,现在为了在 docker 环境中运行多节点(本例中为 2 个节点)IPSF 集群,我们需要运行 2 个 IPFS 对等容器和与每个对等点对应的 2 个 IPFS 集群容器 1。

所以你的 docker-compose 文件将如下所示:

version: '3'

networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16

services:
  ipfs0:
    container_name: ipfs0
    image: ipfs/go-ipfs
    ports:
          - "4001:4001"
          - "5001:5001"
          - "8081:8080"
    volumes:
      - ./var/ipfs0-docker-data:/data/ipfs/
      - ./var/ipfs0-docker-staging:/export
    networks:
      vpcbr:
        ipv4_address: 10.5.0.5

  ipfs1:
    container_name: ipfs1
    image: ipfs/go-ipfs
    ports:
          - "4101:4001"
          - "5101:5001"
          - "8181:8080"
    volumes:
      - ./var/ipfs1-docker-data:/data/ipfs/
      - ./var/ipfs1-docker-staging:/export
    networks:
      vpcbr:
        ipv4_address: 10.5.0.7

  ipfs-cluster0:
    container_name: ipfs-cluster0
    image: ipfs/ipfs-cluster
    depends_on:
      - ipfs0
    environment:
      CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
      IPFS_API: /ip4/10.5.0.5/tcp/5001
    ports:
          - "9094:9094"
          - "9095:9095"
          - "9096:9096"
    volumes:
      - ./var/ipfs-cluster0:/data/ipfs-cluster/
    networks:
      vpcbr:
        ipv4_address: 10.5.0.6

  ipfs-cluster1:
    container_name: ipfs-cluster1
    image: ipfs/ipfs-cluster
    depends_on:
      - ipfs1
      - ipfs-cluster0
    environment:
      CLUSTER_SECRET: 1aebe6d1ff52d96241e00d1abbd1be0743e3ccd0e3f8a05e3c8dd2bbbddb7b93
      IPFS_API: /ip4/10.5.0.7/tcp/5001
    ports:
          - "9194:9094"
          - "9195:9095"
          - "9196:9096"
    volumes:
      - ./var/ipfs-cluster1:/data/ipfs-cluster/
    networks:
      vpcbr:
        ipv4_address: 10.5.0.8
Run Code Online (Sandbox Code Playgroud)

这将旋转 2 个对等 IPFS 集群,我们可以使用任何对等点存储和检索文件。

这里的问题是我们需要向 ipfs-cluster 提供 IPFS_API 作为环境变量,以便 ipfs-cluster 知道其对应的对等点。对于两个 ipfs-cluster,我们需要具有相同的 CLUSTER_SECRET。