😽
GitHub Actionsを使ってAPIのデプロイを自動化する
はじめに
WebAPIを使っていて、デプロイを毎回手元でするのが大変なのでGitHub Actionsで自動化したいと前々から考えていました!
この前に以下のAPIを作ったので、今回はこちらのAPIをGitHub ActionsでDeployを自動化していきます
環境
- GitHubアカウント(Free)
- Modal
deployの設定
今回は開発環境もDockerを使っているので、デプロイ時にもDockerを使っていきます。
Dockerの設定
ModalにAPIをデプロイするときに、tokenが必要になってくるため、.modal.toml
を起動時にローカルからコピーするようにします。(こちらの生成はActionsでSecretから生成します)
DockerFile
FROM python:3.10.12-slim
WORKDIR /usr/src/app/
COPY requirements.txt ./
#Install build tools necessary for compiling hnswlib
RUN pip install --no-cache-dir -r requirements.txt
#.modal.tomlファイルをコンテナの/root/.modal.tomlにコピーする
COPY .modal.toml /root/.modal.toml
compose.yml
services:
clip-api:
build: .
restart: always
volumes:
# ./srcのディレクトリを仮想環境の/usr/src/app/llm-serverにマウントする
# rwと記述することで書き込みも可能なディレクトリとして認識される
- ./src:/usr/src/app/:rw
tty: true
Actionsファイルの設定
mainブランチにpushしたタイミングでDeployをしてほしいので、トリガーをmain branchに設定します
また、GitHub ActionsでDockerを起動する際にttyがSupportされていないと怒られるため、-T
を付けて実行します
action.yml
name: Deploy Clip API
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Create .modal.toml File
run: echo "$MODAL_TOML" > .modal.toml
env:
MODAL_TOML: ${{ secrets.MODAL_TOML }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Start Docker Compose
run: docker-compose up -d
- name: Execute Deploy Command in Docker Container
run: docker-compose exec -T clip-api modal deploy clip_api.py
デプロイの実行と結果
pushされたタイミングで以下のように実行されます!
APIも無事にデプロイされていますね!
midra-lab.notion.site/MidraLab-dd08b86fba4e4041a14e09a1d36f36ae 個人が興味を持ったこと × チームで面白いものや興味を持ったものを試していくコミュニティ
Discussion