はじめに
fly.ioでデプロイのためにfly deploy
を行った際に詰まったところとその解決方法をまとめる.
問題
Error: failed to fetch an image or build from source: Could not find image "docker.io/library/flask-tutorial-blog-app:latest"
これは,fly deploy
コマンドがリモートでイメージを見つけられないことを示している.これは,Fly.ioがローカルでビルドしたイメージをリモートレジストリにプッシュできていないため.
なお,flask-tutorial-blog-appというのはflyに登録されているappの名前である.
解決方法
現在のローカル環境からdockerイメージをビルドし,それをfly.io上にpush
した上で,そのイメージをもとにdeploy
すればよい.以下に手順をまとめる.
1. fly.ioへの接続
fly.ioへログインとdockerの認証を済ませる.
fly auth login
fly auth docker
2. Dockerイメージのビルドとプッシュ
ローカルでDockerイメージをビルドし,Fly.ioのレジストリにDockerイメージをプッシュする.
docker build -t registry.fly.io/flask-tutorial-blog-app:latest .
docker push registry.fly.io/flask-tutorial-blog-app:latest
3. Fly.ioのデプロイ
イメージをプッシュした後、Fly.ioにデプロイする.この時,Fly.ioのレジストリからイメージを取得するように明示的に指定する.
fly deploy --image registry.fly.io/flask-tutorial-blog-app:latest
ここで,単に`fly deploy`だと,リモートでイメージを見つけられないというエラーが発生し,以下のようになってしまうので注意する.
Error: failed to fetch an image or build from source: Could not find image "docker.io/library/flask-tutorial-blog-app:latest"