この記事では、Ubuntu環境でC#のWeb APIプロジェクトをGitとDockerを使ってデプロイする手順を解説します。Flexus Xインスタンスを利用して、コードのバージョン管理とコンテナ化デプロイメントを行います。
環境準備
サーバーの設定
Flexus Xインスタンスを選択し、4vCPUsと12GiBのRAMを使用しました。OSは最新版のUbuntuを選択しました。
Xshellを使用して、サーバーのパブリックIPアドレスとパスワードで接続します。
プロジェクトのデプロイ
Dockerfileの作成
.NET 8.0のWeb APIプロジェクトを作成します。ここでは、既存のweatherforecastインターフェースを使用します。
Giteeに新しいリポジトリを作成し、コードをアップロードします。
プロジェクトディレクトリにDockerfileを作成します。以下にその内容を示します:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER appuser
WORKDIR /app
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG CONFIG=Release
WORKDIR /src
COPY ["MyWebApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "MyWebApp/MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "MyWebApp.csproj" -c $CONFIG -o /app/build
FROM build AS publish
ARG CONFIG=Release
RUN dotnet publish "MyWebApp.csproj" -c $CONFIG -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Gitのセットアップとコードの取得
Gitのインストール
sudo apt update
sudo apt install git
Gitユーザー情報の設定
git config --global user.name "あなたの名前"
git config --global user.email "あなたのメールアドレス"
SSHキーの生成
ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス"
生成した公開鍵をGiteeのSSHキー設定に追加します。
Dockerのインストール
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
Docker GPGキーの追加
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Dockerリポジトリの追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
ソフトウェアリストの更新
sudo apt update
Dockerのインストール
sudo apt install docker-ce docker-ce-cli containerd.io
プロジェクトの実行
イメージのビルド
docker build -t myapp .
コンテナの起動
docker run -d -p 8080:8080 --restart=always --name myapp myapp
セキュリティグループの設定
サーバーコンソールから、8080ポートを開放するルールを追加します。
インターフェースへのアクセス
ブラウザでサーバーのIPアドレス:8080/weatherforecastにアクセスし、レスポンスを確認します。
アプリケーションの更新
プロジェクトのコードを変更し、Gitにプッシュします。
git pull
docker build -t myapp .
docker stop myapp
docker rm myapp
docker run -d -p 8080:8080 --restart=always --name myapp myapp
ブラウザをリフレッシュして、変更が反映されていることを確認します。