自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创建隐藏文件夹.flyctlcd .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