最近接触到一个非常有意思的区块链项目,Akash。
Akash是一个去中心化的云平台,透明,安全的云计算市场。
通过AKT代币的激励机制,Akash可以连接世界各地有计算资源的人或者说云服务供应商和需要云服务的普通客户。一方面用户可以作为供应商出租自己的计算能力,另一方面消费者不需要理解自己使用的具体是哪个云服务供应商。
用户可以在Akash Decloud上部署任何有趣的应用,本文就以区块链项目MultiVac的首个Defi应用“dFed Finance”为例,讲解如何在Akash Decloud上部署应用。
1、下载并打包dFed
先将dFed的源文件下载
git clone https://github.com/dFed-finance/interface.git
dFed的启动和打包也是比较简单。
下载到本地之后,进入interface文件夹,先npm install和npm run start
就可以在本地启动dFed,此时可以通过浏览器输入http://localhost:8080 直接访问。
但是我们要把它部署到Akash云平台上,所以还有对它进行打包,制作成docker镜像对方式来部署到Akash Decloud上面。
npm run build
通过npm run build来编译和生成打包成最小化产品,此时可以发现当前目录下多了一个dist文件夹。
2、制作dfed的镜像文件
用Dockerfile的方式生成镜像
在当前目录下创建一个Dockerfile的文件,并配置好Dockerfile
touch Dockerfile
Vim Dockerfile
Dockerfilel里面写入如下内容
FROM nginx:1.16.1
# /usr/share/nginx/html默认路径
# 拉取ngninx:1.16.1就创建了
WORKDIR /usr/share/nginx/html/dist
# 把项目拷到文件夹下
COPY /dist /usr/share/nginx/html/dist
# 更新conf.d下default.conf
COPY nginx/default.conf /etc/nginx/conf.d
CMD ["nginx", "-g", "daemon off;"]
同时根据COPY的位置修改好nginx的配置
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root /usr/share/nginx/html;
}
}
用docker bulid命令创建我们需要的镜像文件。
docker build . -t dfed:v1
等打包完之后可以通过docker images 查看镜像文件。
接下来可以在本地docker run测试一下。
docker run --name dfed -p 9002:80 dfed:v1
创建一个dfed的容器启动dfed:v1镜像,在浏览器上可以直接用localhost:9002访问我们刚刚部署的应用,如果一切都没有问题就可以上传到docker hub了。
我这里直接docker push jiananxu/dfed:v1 就直接把镜像传到docker hub网上供其他人使用了。
3、将dFed部署到Akash云平台上
(1)创建dfed的SDL
这里跟挑战赛里部署其它应用没有太大区别,可以直接用官方提供的deploy.yml来修改。SDL上只修改几个参数,我们把镜像和端口的参数修改下就可以了。然后另存为deploy_dfed.yml文件。
将deploy.yml文档里的image和port修改成自己的。
---
version: "2.0"
services:
web:
image: jiananxu/dfed:v1
expose:
- port: 80
as: 80
to:
- global: true
(2)开始部署dFed
接下来就更部署Akash其它应用步骤一样了。
#用deploy_dfed.yml创建部署应用
akash tx deployment create deploy_dfed.yml --from $KEY_NAME --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID -y
#查询创建部署信息
akash query market lease list --owner $ACCOUNT_ADDRESS --node $AKASH_NODE --state active
#重新设置新的变量
export PROVIDER="设置成自己查看到的Provider地址"
export DSEQ="修改成自己查看到对应的DSEQ数值"
#上传部署许可
akash provider send-manifest deploy_dfed.yml --node $AKASH_NODE --dseq $DSEQ --oseq $OSEQ --gseq $GSEQ --owner $ACCOUNT_ADDRESS --provider $PROVIDER
#查看应用部署状态
akash provider lease-status --node $AKASH_NODE --dseq $DSEQ --oseq $OSEQ --gseq $GSEQ --provider $PROVIDER --owner $ACCOUNT_ADDRESS
此时如果你已经可以看见键名为uris的一长串网址,这说明已经部署成功了,这网址就是我们刚刚部署到Akash Decloud上的dFed应用网址。
可以在浏览器上打开试试。
这样我们就完成了dFed部署在Akash云上了。