AWS Cloud9 + fly.ioでRailsチュートリアル
困ったときのヒント集>AWS Cloud9 で開発する
この通りの手順で問題なく使用できた。
困ったときのヒント集>デプロイ先を変更する
手順1を実行するとbash: flyctl: command not found
よく読むとflyctlのインストール時に
flyctl was installed successfully to /home/ec2-user/.fly/bin/flyctl
Manually add the directory to your $HOME/.bash_profile (or similar)
export FLYCTL_INSTALL="/home/ec2-user/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"
Run '/home/ec2-user/.fly/bin/flyctl --help' to get started
と表示されていたので、このようにしておけば大丈夫だったはず。
("/home/ec2-user/.fly"の部分だけコマンドを差し替え)
curl -L https://fly.io/install.sh | sh
echo 'FLYCTL_INSTALL="/home/ec2-user/.fly"' >> $HOME/.bash_profile
echo 'PATH="$FLYCTL_INSTALL/bin:$PATH"' >> $HOME/.bash_profile
source $HOME/.bash_profile > /dev/null
手順2 flyctl auth login
を実行してターミナルに表示されたURLをクリック、GitHubのアカウントでサインイン
手順3 Railsアプリケーションを置いているディレクトリでfly launch
を実行すると、ターミナル上に下記のような表示が出てきた。
Detected a Rails app
Creating app in /home/ec2-user/environment/[アプリ名]
We're about to launch your Rails app on Fly.io. Here's what you're getting:
Organization: example@gmail.com (fly launch defaults to the personal org)
Name: [アプリ名] (derived from your directory name)
Region: Tokyo, Japan (this is the fastest region for you)
App Machines: shared-cpu-1x, 1GB RAM (most apps need about 1GB of RAM)
Postgres: <none> (determined from app source)
Redis: <none> (not requested)
? Do you want to tweak these settings before proceeding? (y/N)
yを押すとURLが表示されるのでクリックするとこのような設定画面に。
App nameはグローバルでユニークな名称である必要があるらしい。
また、無料で使用できるリソースは下記の範囲になるので、Memory & CPUとDatabaseはそれぞれshared-cpu-1x@256MBを使用することにした。
- Up to 3 shared-cpu-1x 256mb VMs
- 3GB persistent volume storage (total)
- 160GB outbound data transfer
手順4 fly deploy
を実行して数分待つとURLが表示され、クリックするとデプロイしたアプリにアクセスできた。
Visit your newly deployed app at https://[アプリ名].fly.dev/
デフォルトだとauto_stop_machinesの設定がtrueなので、数分アクセスがないとアプリが自動で停止するらしい。常に動かしておきたい場合は、作成されたfly.tomlを編集すれば良いとのこと。
13章でImageMagickを導入する必要があった。
sudo apt-get install imagemagick
ところが、冒頭の「困ったときのヒント集>AWS Cloud9 で開発する」の推奨手順を誤っていたようで、
UbuntuではなくAmazon Linux 2を導入していたことに気づく(今更…)
Amazon Linux 2はRedHatベースのようなのでapt-getは使えない。代わりにyumを使う。
sudo yum install -y ImageMagick
Fly.ioにデプロイする時にImageMagickを導入するには、
初回デプロイの際に自動で作成されたdockerfileに追加する。
# Install packages needed for deployment
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y curl libsqlite3-0 postgresql-client imagemagick && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives
Fly.ioで環境変数を設定する方法
https://fly.io/apps/[アプリ名]/secrets
からも編集できそう。
画像をアップロードするときメモリが足りなくてエラーが出たので、メモリを512MBに増やしたら動いた(無料枠は超えてしまう)
flyctl scale memory 512
設定ファイル周りの話
migrationは特に設定しなくても自動でやってくれる