ASP.NET 5の準備:DockerとTutumを使用した継続的な展開

この記事では、Dockerコンテナー、 Tutum 、サーバー、またはクラウドに基づいてASP.NET 5(Vnext)アプリケーションの継続的な展開を行う方法を示します



Dockerの資料を勉強するとき、私が最も疑問に思ったのは、プライベートリポジトリをサーバーにデプロイしてこのプロセスを自動化することでした。

回路図








リポジトリ



最初にBitbucketにプライベートリポジトリを作成する必要があります。任意のタイプのリポジトリを選択できますが、この例では最も一般的なGitを使用しますGithub (有料)とGitLab (無料ですが、 https: //hub.docker.comではサポートされていません)の両方でプライベートリポジトリを作成できますが、歴史的に私は主にbitbucketとmercurialを使用していたので、gitに切り替えました。



Dockerコンテナからssh経由でリポジトリをダウンロードできるようにするには、アカウントにキー追加する必要があります(アカウントの管理-> SSHキー-キーの追加)。



次に、リポジトリをマシンにクローンする必要があります。 ソースツリーを使用してこれを行い、 そこに新しいVnextプロジェクトを追加し、sshキーとDockerfileを追加します。



ベータ8、iis、vsについて
ベータ8を使用して作業する場合、パッケージをスタジオから復元することはできません;コンソールからdnu復元を行う必要があります。

IISに関しては、 RaveNoX答えを書きました。 つまりkestrelは私たちのものですが、MacとLinuxには他のオプションはありませんでしたので、問題は大きくありません。



Dockerfileを使用してデプロイする場合、2つのアプローチがあります。



1) COPYを作成します。Dockerfileはプロジェクトのルートにある必要があります。

2) git cloneを作成します-Dockerfileはどこにでも配置できます。リポジトリのsshキーが近くにあることが望ましいです。



Dockerfile
FROM microsoft/aspnet:1.0.0-beta8 #   WORKDIR /app #   git RUN apt-get update && apt-get install -y git #  RUN mkdir -p /root/.ssh ADD yourkey /root/.ssh/id_rsa RUN chmod 700 /root/.ssh/id_rsa RUN echo "Host yourkey "$'\n'"HostName bitbucket.org"$'\n'"IdentityFile /root/.ssh/id_rsa" >> /root/.ssh/config # known_hosts RUN touch /root/.ssh/known_hosts # bitbuckets key RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts #  RUN git clone git@bitbucket.org:login/repositoryName.git #      NuGet -    RUN mkdir -p ~/.config/NuGet RUN cd repositoryName RUN cp /app/repositoryName/NuGet.config ~/.config/NuGet/ #  RUN dnu restore EXPOSE 5004 #    ENTRYPOINT ["sh", "/app/repositoryName/init.sh"]
      
      







init.sh
 cd /app/repositoryName/ dnx -p project.json kestrel
      
      







コミットしてプッシュします。



Hub.docker.com



プロジェクトがあり、コンテナがあります。これらはすべてローカルでテストできます。次のタスクは、サーバー上でこれらすべてを自動的に開始することです。



アカウントを作成するか、 hub.docker.comにログインます 。 その後、「自動ビルドの作成」を作成する必要があります。これは、GithubまたはBitbucketリポジトリから実行できます。



自動ビルドを作成する






図1-自動ビルドの作成



次に、アセンブリを構成する必要があります。



プロジェクトのビルド設定






図2-プロジェクトのビルド設定



アクティブな場合、プッシュ時にビルドが自動的に行われます。 -プロパティが設定されている場合、リポジトリにプッシュすると、設定に従って新しいコンテナのアセンブリが開始されます。

名前 -プロジェクトを収集するブランチ。デフォルトでは、すべてのブランチを収集します。

Dockerfileの場所 -Dockerfileが置かれているフォルダー、つまりフォルダー。Dockerfile名を指定する機能はサポートされていません。 このため、COPYコマンドではなく、リポジトリを介したコード取得を使用すると便利です。 1つのプライベートリポジトリで、APIや長時間の操作を処理するワーカーなど、共通のコードベースを持つ複数のプロジェクトを収集できます。

Dockerタグ名 -特定のコンテナを作成するために後で使用されるタグ。

すべてのブランチに対してアセンブリが選択されている場合、[トリガー]ボタンは使用できないため、プッシュしてビルドする必要があります。

ビルドの詳細ステータスとビルドログを確認します。すべてが組み立てられたら、次のステップに進みます。



腫瘍



Tutumのドッカーハブを通過します。



Tutumにリポジトリを追加






図3-Tutumにリポジトリを追加してサービスを作成する



リポジトリ名 -hub.docker.comのログイン/リポジトリ

hub.docker.comの ユーザー名パスワード



次に、クラウドプロバイダーを構成して、Tutumパネルからサーバーを作成できるようにします。



アカウント情報






図4-必要なクラウドサービスへのリンクを追加する



サービスを公開するためのサーバー(ノード)を作成しましょう。



ノードクラスターを作成する






図5-サーバーとそのパラメーターを追加します。この場合はDO



デプロイタグ -サービスとそれらがデプロイされているマシンを相関させるためにサーバーの説明に記述するタグ。

Vscale.io
Vscale.ioマシンを追加する方法:

[ Bring your own node]をクリックします。次の形式のコマンドが表示されます。

curl -Ls get.tutum.co | sudo -H sh -s b5730f134e5f4674575c45a65a0ddd84



sshを介してvscale.ioサーバーに接続して完了する必要があります。



新しいサービスを作成する



画像






図6-Tutumでのサービスの作成



イメージタグ -hub.docker.comに割り当てたタグ。タグがない場合、リポジトリを追加するときにログイン\パスワードを誤って入力した可能性があります。

デプロイタグ -サービスとそれらがデプロイされているマシンを相関させるためにサーバーの説明に記述するタグ。

ポート -Publishedをポート5004にして、80番目のポートを割り当てる必要があります。

[ 作成して展開]をクリックします



サービスはStackファイルを介して作成できます-非常に便利なことで、複数のサービスを一度にキャプチャし、パラメーターをすばやく編集できます。10個のサービスがあり、これはほんの始まりです。少なくとも3つのサービスを追加します...



スタックファイル
 asp: image: 'login/reponame:tag' ports: - '80:5004' restart: always tags: - tagdeploy
      
      







これで、 エンドポイントに示されたアドレスにあるサーバーにサービスを作成して展開し、サイトを確認できます。

少し魔法をかけることは残っているので、新しいコンテナを組み立てた後、自動的に再デプロイします。



サービスにアクセスし、「 トリガー」タブを選択します。



トリガーを追加






図7-Tutumで再展開するためのWebhook



結果のURLをリポジトリのdockerハブに追加する必要があります。



Webhookを追加






図8-TutumからWebhookを追加



おめでとうございます-すべてが機能し、自動的に展開されます。

PS www.tutum.coは崩壊しましたが、今はcloud.docker.comになります

価格はかなり悲しいです:$ 0.02ノード/時間



All Articles