🥧
【Rust】dockerコンテナ形式でactix-webのアプリケーションをherokuへデプロイする
概要
ActixWebで作成したWebアプリケーションを、herokuにデプロイした時のメモ書きです。今回は、dockerコンテナ形式でデプロイしました。(色々記事を参照したのですが、中々一発で上手くいかなかったので・・)
定義ファイルなど
まずはDockerファイルを用意します。アプリケーション名はevent-api
という名前にしています。
Rustのバージョンは1.60.0
で動作確認しています。
FROM rust:1.60.0 AS build-stage
RUN USER=root cargo new --bin event-api
RUN apt-get update \
&& apt-get install -y -q \
ca-certificates \
locales \
gnupg \
apt-transport-https\
libssl-dev \
pkg-config \
build-essential \
git \
wget \
&& echo "ja_JP UTF-8" > /etc/locale.gen \
&& locale-gen
WORKDIR /event-api
COPY ./ .
RUN cargo build --release
####################################################################################################
## Final image
####################################################################################################
FROM debian:bullseye-slim AS production
RUN apt-get update \
&& apt-get install -y -q \
curl
# Copy build file
COPY /event-api/target/release/event-api .
# Copy other file(ビルドしたファイル以外にコピーが必要ものがあれば)
COPY /event-api/.env.prod .
WORKDIR /asset
COPY /event-api/asset/ .
WORKDIR /
CMD ["./event-api"]
heroku.yml
のファイルは、1環境分だけ設定しています。
build:
docker:
web:
dockerfile: Dockerfile
deployコマンドは以下の通りです。
heroku container:push web
heroku container:release web
参考記事
Container Registry および Runtime (Docker デプロイ)
axumをherokuにデプロイする
Rustで作ったAPIのDocker on Heroku
【New SQL実装編】Docker + Rust + PostgreSQL/CockroachDBでベンチマーク
Discussion