自Heroku不在免费后,我一直在寻找其他免费的Pass,直至找到Fly.io
。 Fly.io
的免费套餐足够我使用。要使用Fly.io
就要安装flyctl,flyctl安装脚本官网有,但我不想在我的VPS上安装,因为这样迁移不方便,我一直都在将使用服务全部替换为Docker运行,因此打起了在容器中安装flyctl的想法。我在GitHub创建了制作flyctl镜像的仓库,通过这种方式极大方便了我在不同VPS之间的迁移。
使用说明
GitHub仓库地址:docker-flyctl
Docker Hub:aaronlee/flyctl
运行方式
推荐使用Docker Compose运行flyctl镜像,因为这涉及到文件映射,使用Docker Compose比较方便。
具体方法:在同fly.toml
文件夹下,创建docker-compose.yml
文件,文件内容如下(方法1):
version: '3'
services:
flyctl:
image: aaronlee/flyctl:latest
container_name: flyctl
restart: always
volumes:
- ./config.toml:/root/.fly/config.yml
# 注意是一个点
- ./:/home/www
在本文件夹下运行docker-compose run --rm flyctl flyctl命令
,例如docker-compose run --rm flyctl flyctl auth login
登录,docker-compose run --rm flyctl flyctl launch
创建应用,docker-compose run --rm flyctl flyctl deploy
部署应用,总之,是docker-compose run --rm flyctl
+flyctl 命令
。
文件示例
RSSHub
├─ Dockerfile
├─ fly.toml
├─ docker-compose.yml
└─ config.toml
取代系统 flyctl命令(推荐)
尽管docker-compose run --rm flyctl
+flyctl 命令
已经可以在容器中运行flyctl,但命令长并且难记,有无更简单的方法?有。
在同fly.toml
文件夹下,通过mkdir .flyctl
创建隐藏文件夹.flyctl
,cd .flyctl
进入隐藏文件,创建docker-compose.yml
文件,内容如下(方法2):
version: '3'
services:
flyctl:
image: aaronlee/flyctl:latest
container_name: flyctl
restart: always
volumes:
- ./config.toml:/root/.fly/config.yml
#注意是两个点
- ../:/home/www
在用户根目录执行vim .bashrc
,在.bashrc
添加 alias dk='docker-compose -f $(pwd)/.flyctl/docker-compose.yml run --rm flyctl'
退出编辑并保存,重启VPS,如果配置正常,就可在同fly.toml
文件夹下通过dk
调用容器里的flyctl
,例如dk flyctl auth login
登录,dk flyctl launch
创建应用,dk flyctl deploy
部署应用,总之,是dk
+flyctl 命令
文件示例
RSSHub
├─ Dockerfile
├─ fly.toml
└─ .flyctl
├─ docker-compose.yml
└─ config.toml
命名比较
原始命令 | 方法1 | 方法2 |
---|---|---|
flyctl launch | docker-compose run --rm flyctl flyctl launch | dk flyctl launch |
flyctl deploy | docker-compose run --rm flyctl flyctl deploy | dk flyctl deploy |