部署完UniSwap之后, 也要看一看备受推崇的IPFS, UniSwap的前端项目uniswap-interface就是基于此部署的
官网地址, 星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP)
需要两个挂载目录 /data/ipfs/export > 导入目录 /data/ipfs/data > ipfs的存储文件
docker run -d --name ipfs_host -v /data/ipfs/export:/export -v /data/ipfs/data:/data/ipfs -p 4001:4001 -p 4001:4001/udp -p 127.0.0.1:8080:8080 -p 127.0.0.1:5001:5001 ipfs/go-ipfs:latest
docker logs -f ipfs_host
出现下面则成功启动
WebUI: http://0.0.0.0:5001/webui
Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/8080
docker exec ipfs_host ipfs swarm peersq
http://127.0.0.1:5001/webui
因为使用docker启动的, docker exec 也是在docker里面执行, 所以需要把文件放到挂载目录中
docker exec ipfs_host ipfs add -r /export/timg.jpg
返回
added QmZRVSAqarZYQRiJYuiaaqqMc44xQ5Wuys3cJdnsKqiUaF timg.jpg
12.16 KiB / 12.16 KiB 100.00%
命令行查看
docker exec ipfs_host ipfs cat /ipfs/QmZRVSAqarZYQRiJYuiaaqqMc44xQ5Wuys3cJdnsKqiUaF
本地路由查看
http://127.0.0.1:8080/ipfs/QmZRVSAqarZYQRiJYuiaaqqMc44xQ5Wuys3cJdnsKqiUaF
公共网关查看
https://ipfs.io/ipfs/QmZRVSAqarZYQRiJYuiaaqqMc44xQ5Wuys3cJdnsKqiUaF
打包
yarn build
将 build 文件夹复制到export 目录中
docker exec ipfs_host ipfs add -r /export/build
...
added QmeogBWiV3FzWLxDWt7uQ49drLdNH2dp6z3EJLFYHDogDh build/static
added QmdAZpjdkX5wi3cUCxuNs8o7FvPXiRopRmvxPmu5fH2ioW build
26.47 MiB / 26.47 MiB 100.00%
就可以直接访问了
http://127.0.0.1:8080/ipfs/QmdAZpjdkX5wi3cUCxuNs8o7FvPXiRopRmvxPmu5fH2ioW
前端项目部署完成后后续更新再提交的话就会更换哈希, 为了保证路由不变我们可以用ipns来解决
docker exec ipfs_host ipfs name publish QmdAZpjdkX5wi3cUCxuNs8o7FvPXiRopRmvxPmu5fH2ioW
Published to k51qzi5uqu5dkh57vee7yzaoc8m5gxi0t88w79ugf0vaeln1tzcfrf3jjgyqs1: /ipfs/QmdAZpjdkX5wi3cUCxuNs8o7FvPXiRopRmvxPmu5fH2ioW
“k51qzi5uqu5dkh57vee7yzaoc8m5gxi0t88w79ugf0vaeln1tzcfrf3jjgyqs1” 就是这个节点的唯一值了, 可以直接用ipns访问
http://127.0.0.1:8080/ipns/k51qzi5uqu5dkh57vee7yzaoc8m5gxi0t88w79ugf0vaeln1tzcfrf3jjgyqs1
docker exec ipfs_host ipfs add -r /export/build
26.47 MiB / 26.47 MiB 100.00%added QmPgtRz3BeCMYLq8rSKCLC1uq2DVKwd3dmc6JGjj7Dbr9t build
docker exec ipfs_host ipfs name publish QmPgtRz3BeCMYLq8rSKCLC1uq2DVKwd3dmc6JGjj7Dbr9t
这样通过之前的路由就能继续访问了
http://127.0.0.1:8080/ipns/k51qzi5uqu5dkh57vee7yzaoc8m5gxi0t88w79ugf0vaeln1tzcfrf3jjgyqs1
docker exec ipfs_host ipfs key gen --type=rsa --size=2048 newkey
k2k4r8jiqwxlyw7rpw9poxrmmvl21xbgz3hqwfh4jneiiw72dhjteizk
docker exec ipfs_host ipfs name publish --key=newkey 项目哈希
这样就可以通过不同的hashKey来部署和访问不同的项目了
http://127.0.0.1:8080/ipns/k2k4r8jiqwxlyw7rpw9poxrmmvl21xbgz3hqwfh4jneiiw72dhjteizk
https://learnblockchain.cn/2018/12/25/use-ipfs
https://v2ex.com/t/598401