ipfs 点对点的分布式文件系统,官方提供了集群模式运行的docker 镜像,以及docker-compose 文件
所以测试下

环境准备

  • docker-compose
 
version: '3.4'
# This is an example docker-compose file for IPFS Cluster
# It runs two Cluster peers (cluster0, cluster1) attached to two
# IPFS daemons (ipfs0, ipfs1).
#
# It expects a "compose" subfolder as follows where it will store configurations
# and states permanently:
#
# 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:release
    ports:
          - "4001:4001" # ipfs swarm
          - "5001:5001" # expose if needed/wanted
          - "8080:8080" # exposes if needed/wanted
    volumes:
      - ./compose/ipfs0:/data/ipfs
      - ./compose/export0:/export
  cluster0:
    container_name: cluster0
    image: ipfs/ipfs-cluster:latest
    depends_on:
      - ipfs0
    environment:
      CLUSTER_SECRET: 3d4aa5422351fabcb0a93d201fb2751f4f3b8a5080f210b775409ca25ba86b49 # From shell variable
      IPFS_API: /dns4/ipfs0/tcp/5001
    ports:
          - "9094:9094" # API
          - "9096:9096" # Cluster IPFS Proxy endpoint
    volumes:
      - ./compose/cluster0:/data/ipfs-cluster
##################################################################################
## Cluster PEER 1 ################################################################
##################################################################################
  ipfs1:
    container_name: ipfs1
    image: ipfs/go-ipfs:release
    ports:
          - "4101:4001" # ipfs swarm
          - "5101:5001" # expose if needed/wanted
          - "8180:8080" # exposes if needed/wanted
    volumes:
      - ./compose/ipfs1:/data/ipfs
      - ./compose/export2:/export
  # cluster1 bootstraps to cluster0 if not bootstrapped before
  cluster1:
    container_name: cluster1
    image: ipfs/ipfs-cluster:latest
    depends_on:
      - cluster0
      - ipfs1
    environment:
      CLUSTER_SECRET: 3d4aa5422351fabcb0a93d201fb2751f4f3b8a5080f210b775409ca25ba86b49 # From shell variable
      IPFS_API: /dns4/ipfs1/tcp/5001
    ports:
          - "9194:9094" # API
          - "9196:9096" # Cluster IPFS Proxy endpoint
    volumes:
      - ./compose/cluster1:/data/ipfs-cluster
    entrypoint:
      - "/sbin/tini"
      - "--"
    # Translation: if state folder does not exist, find cluster0 id and bootstrap
    # to it.
    command: >-
      sh -c '
        cmd="daemon --upgrade"
        if [ ! -d /data/ipfs-cluster/raft ]; then
          while ! ipfs-cluster-ctl --host /dns4/cluster0/tcp/9094 id; do
            sleep 1
          done
          pid=`ipfs-cluster-ctl --host /dns4/cluster0/tcp/9094 id | grep -o -E "^(\w+)"`
          sleep 10
          cmd="daemon --bootstrap /dns4/cluster0/tcp/9096/ipfs/$$pid"
        fi
        exec /usr/local/bin/entrypoint.sh $$cmd
      '
# For adding more peers, copy PEER 1 and rename things to ipfs2, cluster2.
# Keep bootstrapping to cluster0.
 
 
  • 说明
    我在官方的基础上添加了secret ,方便直接运行,同时开启了网络访问
  • 效果

操作

  • 添加文件测试
    直接在export0 添加一个简单的静态页面就可以了
 
docker-compose exec ipfs0 sh
ipfs add -f /export/users
  • 效果
added QmQPZwCUtjjTnWiMuyS7un6T2WdHtxWfa5YyFqwwSp9UwF users/index.css
added QmSj9817rjvUYLCWXSxgMT89Sfr8jdYWJevrPDU2rACpvf users/index.html
added QmZEubFCffhFAfPro18PSt78M1mtR32wcC82y13so91zcN users
  • 访问文件
http://localhost:8080/ipfs/QmZEubFCffhFAfPro18PSt78M1mtR32wcC82y13so91zcN
http://localhost:8180/ipfs/QmZEubFCffhFAfPro18PSt78M1mtR32wcC82y13so91zcN
  • 效果

说明

ipfs cluster 的配置参数也挺多的,最好是参考官方文档,ipfs 是一个很不错的项目。

参考文档

https://cluster.ipfs.io/documentation/configuration/
https://github.com/rongfengliang/ipfs-clutser-docker-compose

ipfs cluster 模式部署使用(docker-compose 环境运行)的更多相关文章

  1. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  2. 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行

    实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...

  3. docker compose环境搭建

    概述 Docker Compose提供一个简单的基于YAML配置语言.用于描写叙述和组装多容器的分布式应用. 使用docker定义和执行复杂的应用.使用compose,能够在一个文件中,定义多容器的应 ...

  4. 附004.Docker Compose环境变量说明

    一 环境变量概述 Compose支持在docker-compose执行命令的文件夹中,名为.env的环境变量配置文件声明默认环境变量. 二 定义变量 2.1 语法规则 Compose建议env文件中的 ...

  5. redis详解之cluster模式部署

    一.环境说明 1.Operation OS:CentOS7.22.ruby version >= 2.2.23.openssl zlib gcc>=4.8.5 二.开始部署 1.安装rub ...

  6. 部署Jenkins+docker集成环境

    环境: 主机(mac osx)和虚拟机(Ubuntu 16.04) mac osx系统,运行Jenkins Ubuntu16.04系统,运行docker(用Ubuntu14.04镜像创建一个docke ...

  7. Docker Compose 项目打包部署

    Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...

  8. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  9. Spark基本工作流程及YARN cluster模式原理(读书笔记)

    Spark基本工作流程及YARN cluster模式原理 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark基本工作流程 相关术语解释 Spark应用程序相关的几 ...

随机推荐

  1. 4.4 C++虚析构函数

    参考:http://www.weixueyuan.net/view/6373.html 总结: 构造函数是不能声明为虚函数的,析构函数可以被声明为虚函数. 将基类的析构函数声明为虚函数之后,派生类的析 ...

  2. 异步设备IO OVERLAPPED结构(设备内核对象 事件内核对象 可提醒IO)

    同步IO是指:线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备驱动程序的通知. 一.异步准备与OVERLAPPED结构 ...

  3. 多War包合并,jetty测试

    模块间的相互依赖引用配置在pom.xml中加入要依赖的模块即可<dependency>    <groupId>com.exayong</groupId>    & ...

  4. python中变量命名的基本规则,标识符和关键字

    变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图:  标示符可以由 字母.下划 ...

  5. 循环神经网络-LSTM

    LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件. LSTM能够很大程度上缓解长期依赖的问题. ...

  6. Spring学习六(事物管理)

    参考链接 http://www.mamicode.com/info-detail-1248286.html http://www.cnblogs.com/wangdaqian/archive/2017 ...

  7. day 21 模块 和 包

    一.模块-----(python代码的文件) 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 为什么需要模块? 代码的可读性差,且重复的代码多,写代码困难大 ...

  8. <context:annotation-config/>和<mvc:annotation-driven/>及解决No mapping found for HTTP request with URI [/role/getRole] in DispatcherServlet with name 'springmvc-config'

    1:什么时候使用<context:annotation-config> 当你使用@Autowired,@Required,@Resource,@PostConstruct,@PreDest ...

  9. winform 异性窗体的实现

    效果图 首先需要在vs里添加控件  AlphaForm.dll 添加完了有这来两个控件 1.把第二个控件拖入窗体里把窗体铺满 2.找一张至少有一个闭合图形的透明图片 设置为AlphaFormTrans ...

  10. day12作业