Akash DeCloud部署Squoosh
Akash项目介绍
Akash是为DeFi而设的DeCloud和世界上第一个去中心化云计算市场。通过AKT代币的激励机制,Akash可以连接世界各地有计算资源的人或者说云服务供应商和需要云服务的普通客户。一方面用户可以作为供应商出租自己的计算能力,另一方面消费者不需要理解自己使用的具体是哪个云服务供应商。
项目官网:https://akash.network/
Squoosh项目介绍
Squoosh!是Google Chrome Lab开发的一个图像压缩web应用程序,允许您深入研究各种图像压缩器提供的高级选项。
项目Github:https://github.com/GoogleChromeLabs/squoosh
1下载并运行Squoosh!
1.1 github下载运行
输入git clone https://github.com/GoogleChromeLabs/squoosh.git
,进入项目文件夹,输入npm install
下载全部依赖,按照提示,输入npm start
看看是否运行成功。
1.2 build项目
输入npm run build
对项目进行打包,成功后会在项目目录中生成一个build文件夹。
1.3 制作docker镜像
Docker的安装和基本使用方法参见https://www.runoob.com/docker/docker-tutorial.html
我们在Squoosh项目文件夹下添加Dockerfile文本文件,里面输入如下内容
FROM nginx
COPY build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
每一行分别的意思是:
基于Nginx镜像
把编译镜像的/node/release/build复制到/usr/share/nginx/html
暴露端口80
运行nginx
保存Dockerfile并输入docker build . -t squoosh:latest
完成后输入docker images可以看到刚刚创建的镜像
输入docker run --name squoosh -p 80:80 squoosh:latest
,运行刚刚创建的docker镜像。它代表开放本地主机端口80来连接镜像的80端口。
1.4 上传镜像文件至DockerHub
输入docker tag squoosh:latest halw001/squoosh:dev
修改刚刚的镜像文件的tag。dockerhub为了区分不同用户的同名image,所以要把格式改为:[username]/xxx:tag。建议修改完以后再运行docker run --name squoosh -p 80:80 halw001/squoosh:dev
来看看我们最终上传的镜像是否正常运行。
输入docker push halw001/squoosh:dev
,把镜像上传至DockerHub,至此,任何人都可以用docker pull halw001/squoosh:dev
来获取我上传的镜像。
2部署至Akash网络
2.1 修改一下部署文件
根据https://github.com/ovrclk/docs/blob/335978772efddd76215adadcd6fa4d13464ddff7/testnet-challenges/deploy-1-1.yaml,把其中6-9行改为
image: halw001/squoosh:dev # dockerhub上的镜像
expose:
- port: 80 # 内部运行端口
as: 80 # 暴露出的端口
并保存为deploy-squoosh.yml
2.2上传到Akash网络
.bashrc文件可以按照下图的设置,设置完成后运行source ~/.bashrc
接着依照如下步骤
创建部署
akash tx deployment create deploy-squoosh.yml --from $KEY_NAME --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID -y
等待租凭,查看是否成功。主要要在环境变量中设置这条命令输出的PROVIDER/DSEQ/OSEQ/GSEQ变量值。
akash provider send-manifest deploy-squoosh.yml --node $AKASH_NODE --dseq $DSEQ --oseq $OSEQ --gseq $GSEQ --owner $ACCOUNT_ADDRESS --provider $PROVIDER
上传manifest
akash provider send-manifest deploy-squoosh.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
最后根据最后一条指令的返回信息进入Akash网络上部署的Squoosh。可以看到Akash成功运行了Squoosh。
最后输入如下指令,释放provider。
akash tx deployment close --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --dseq $DSEQ --owner $ACCOUNT_ADDRESS --from $KEY_NAME -y