top of page

fly.ioへコンテナをデプロイ

  • ccf代表
  • 2月24日
  • 読了時間: 3分

更新日:2月25日

当社が利用しているfreeeやboardから必要なデータを取得し、会社の傾向を掴むためのデータを抽出しようとコンテナでアプリを作りました。

アプリは、チームみらいさんのGithubレポジトリ(https://github.com/team-mirai/marumie)をベースにして一分必要な昨日や図表を表示するように、コードを書いています。


データ解析だけを目的としたSaaSは徐々に衰退し、基幹業務に必要となるSaaSはデータプラットフォーム(単なるデータ置き場)となる可能性はあると思っています。その場合、API利用料は徐々に上がっていくんでしょうね。


今回作成したアプリはコンテナ化していることもあり、社内のみで運用を想定していましたが、fly.ioを利用したのは、安いコンテナサービスを利用して見たいという好奇心です。

月に数百円で利用できるか、を試してみたいと思います。


前提条件

  • Dockerfileはローカルテスト済みのものを使用する

  • アプリはEntra ID認証を行い、社外の人がアクセスできないようにする

  • githubレポジトリをローカルにコピーし、デプロイする

  • 必要な認証系の情報は環境変数として持つ

  • freeeやboardからデータ取得を頻繁に行わないように、一度取得したデータは再取得を指示しない限りは、永続的にストレージに保持(sqlite)


作業の流れ

  1. コーディング(省略)

  2. fly.ioはアカウントの作成(省略)

  3. 開発環境にflyコマンドをインストール

  4. fly.ioへログイン

  5. Entra ID認証アプリ登録

  6. デプロイ


3.開発環境にflyコマンドをインストール

サイトに有る通り、Linux用のコマンドを実行し、環境変数を再度読み込む

$ sudo curl -L https://fly.io/install.sh | sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5167  100  5167    0     0  44516      0 --:--:-- --:--:-- --:--:-- 44162
######################################################################## 100.0%
set update channel to shell
Warning: Metrics token unavailable: no metrics token in config
flyctl was installed successfully to /home/xxxx/.fly/bin/flyctl
flyctl is not in your PATH. Would you like to add it automatically? (Y/n)
Y

flyctl PATH configured successfully in /home/xxxx/.bashrc

To start using flyctl in this terminal, run:
  source ~/.bashrc

Or simply open a new terminal (flyctl will be available automatically).
$ source ~/.bashrc

4.fly.ioへログイン

$ fly auth login
failed opening browser. Copy the url (https://fly.io/app/auth/cli/xxxx) into a browser and continue
Opening https://fly.io/app/auth/cli/xxxx ...

Waiting for session... Done
successfully logged in as xxx.xxxx@challenge-cf.jp

5.Entra ID認証アプリ登録

設定箇所は以下の3つ

続いて、クライアントシークレットの作成し、”値”をメモ


6.デプロイ

githubからアプリを作成

$ git clone https://github.com/Challenge-Consulting-Firm/xxxx.git
$ cd xxxx
$ fly apps create xxxx

日本リージョンに永続ボリュームを作成

fly volumes create app_data --region nrt --size 1

環境変数にシークレットを設定

fly secrets set \
  FREEE_CLIENT_ID=your_client_id \
  FREEE_CLIENT_SECRET=your_client_secret \
  FREEE_REDIRECT_URI=urn:ietf:wg:oauth:2.0:oob \
  SESSION_SECRET=$(openssl rand -base64 32) \
  BOARD_API_KEY=your_board_api_key \
  BOARD_API_TOKEN=your_board_api_token \
  AZURE_TENANT_ID=your_tenant_id \
  AZURE_CLIENT_ID=your_azure_client_id \
  AZURE_CLIENT_SECRET=your_azure_client_secret \
  OAUTH2_PROXY_COOKIE_SECRET=$(openssl rand -base64 32 | head -c 32) \
  APP_DOMAIN=xxxx.fly.dev

デプロイ

fly deploy

最新記事

すべて表示
Hybrid Runbook WorkerのPowerShell実行環境への環境変数

Azure Automation上のスクリプトをローカル環境でリモート実行するときに、少し時間が経つといつもつまずくことを備忘として記載します。 以下のURLにある通り、環境変数で設定しろ、書いてあるんですが、これが曲者。。。...

 
 
 
Azure Container AppsでAP-DB構成を組んでみる

目的 前回「Azure Container InstancesでAP-DB構成を組んでみる」で、ACIを使ったコンテナ構成を組んでみましたが、Dockerよりの機能がためか、スポット的な利用であればいいのですが、絶えず動かしておくには少しコストが掛かりすぎる印象です。...

 
 
 

コメント


bottom of page