環境説明
Dockerのインストール古いDockerをアンインストールする sudo apt-get 削除 docker docker-engine docker.io containerd runc apt パッケージ インデックスを更新し、apt が HTTPS 経由でリポジトリを使用できるようにパッケージをインストールします。 sudo apt-getアップデート sudo apt-get インストール \ apt-transport-https \ ca証明書\ カール\ gnupg \ lsb リリース Docker公式GPGキーを追加する curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Dockerをインストールする sudo apt-get install docker-ce docker-ce-cli containerd.io hello-world を実行して、Docker が正しくインストールされていることを確認します。出力Hello from Docker!はインストールが成功したことを示します。 sudo docker run hello-world さまざまなシステムのインストール方法については、公式のDockerインストール手順を参照してください。 ゴグのインストールGogs は、Go 言語で開発された、軽量で簡単に構築できるセルフサービス Git サービスです。 Gogs を選んだ主な理由は、内部使用率が数 GB の Gitlab よりもはるかに軽量であることです。 Gogs はシステムのオーバーヘッドを大幅に削減し、実行時に 100 MB のメモリしか消費しません。私のGogsはSynology上で実行され、結果は同じです。どちらもDockerでホストされています。 Gogsイメージをプル sudo docker pull gogs/gogs Gogsファイルのマウントパスを作成する mkdir -p /var/gogs コンテナ6022を起動するとhttps、6080はhttpになります。正常に起動しているかは docker run -d --name=my_gogs -p 6022:22 -p 6080:3000 -v /var/gogs:/data gogs/gogs コンテナが起動したら、 推奨されるデータベース タイプは、Linux に付属する SQLite3 です。これは、12 人程度のチームをサポートするのに十分です。ドメイン名: Gogs が配置されているサーバーのドメイン名または IP アドレスを入力します。 http ポート番号はコンテナの内部ポートと一致します。アプリケーション URL に Gogs のドメイン名ポートまたは IP ポートを入力します。[インストール] をクリックし、新しいユーザーを登録してログインします。 Gogsをインストールしたら、後で使用するために新しいデモリポジトリを作成します。 Gogs 公式ドキュメント Docker で .NetCore サービスをホストする新しいWebApiプロジェクトを作成する プロジェクトにDockerFileファイルを追加して設定するだけです #依存関係のバージョンを指定します。FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim ワークディレクトリ /app コピー ./publish WORKDIR /publish # DockerコンテナをポートEXPOSE 80を公開するように設定する # タイムゾーンを設定する RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone # プログラムエントリ ENTRYPOINT ["dotnet", "DemoWebApi.dll"] API サービスを公開します。公開されたファイルに DockerFile ファイルがない場合、プロジェクト ファイルを手動で変更する必要があります。リリースが成功したら、公開されたファイルをサーバーで指定されたフォルダーにコピーします。 <アイテムグループ> <なし更新="Dockerfile"> <CopyToOutputDirectory>常に</CopyToOutputDirectory> </なし> </アイテムグループ> サーバーにコピーしたリリース ファイルのルート パスに移動し、 生成されたすべてのイメージを表示するには、 イメージが正常に生成されたら、イメージを使用してコンテナを作成して実行できます。 実行後、 Postmanを使用して、デプロイメントが成功したかどうかをテストします。 一般的なDockerコマンドをいくつか挙げる
この時点で、サービスは Docker でホストされていますが、リリースごとに新しいイメージを構築し、古いコンテナを停止して新しいコンテナを作成する必要があり、ワークロードが目に見えないほど増加します。 Jenkinsはこれを実行できます JenkinsのインストールJenkins は Java に依存しているため、Java SDK をインストールする必要があります。ここでは、Java 8 を選択します。 sudo apt-get で openjdk-8-jdk をインストールします JenkinsのLTSバージョンのインストール wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key を追加 - sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable バイナリ/ > \ /etc/apt/sources.list.d/jenkins.list' sudo apt-getアップデート sudo apt-get でジェンキンスをインストールします 実行ステータスを確認するには Jenkins のデフォルト ポートは 8080 です。インストールが成功すると、 パスワードを入力した後、初期化ページに入り、推奨プラグインのインストールを選択します。 プラグインのインストールには時間がかかる場合があります。 完了したら、管理者アカウントを作成してログインし、システム管理に入り、プラグイン管理を選択して、 インストール後、Jenkins を再起動する必要があります。リンク スクリプトの実行を容易にするには、Jenkins を root ユーザーとして実行する必要があります。 chown -R ルート:ルート /var/lib/jenkins chown -R ルート:ルート /var/cache/jenkins chown -R ルート:ルート /var/log/jenkins Jenkinsの一般的な操作
Jenkinsによる自動化サーバー上でプロジェクトをビルドする必要があるため、.NetCore 環境をインストールする必要があります。Microsoft の公式ドキュメントを参照して、自分でインストールすることができます。 新しく作成したプロジェクトをGogsリポジトリにプッシュし、リポジトリの詳細設定をクリックします。 Webフックを選択し、新しいGogs Webフックを追加します Web フックを設定します。プッシュ アドレスの前に Jenkins アクセス リンクが付き、ジョブ名は自分で定義できます。プッシュ時にのみフックをトリガーするように選択することも、イベントを自分で選択することもできます。 追加後、再度「Web フックの管理」をクリックし、新しく作成したフックを選択して「プッシュのテスト」をクリックして正常かどうかを確認します。ジョブが定義されていないという例外がスローされた場合、フックが正常であることを意味します。他の例外の場合は、プッシュ アドレスが正しいかどうか、Jenkins 上の Gogs プラグインが正しくインストールされているかどうかを確認できます。 Jenkins ページに戻り、新しいタスクを作成します。タスク名は Gogs のジョブ名と同じです。「フリースタイル ソフトウェア プロジェクトのビルド」を選択します。 リポジトリ設定を追加します。リポジトリ URL はリポジトリのアドレスです。クリックしてリポジトリの資格情報を追加します。最後に、操作のブランチを指定します。 シェルスクリプトをビルドして実行を選択します。スクリプトはサーバー上に配置してここで呼び出すこともできます。便宜上、ここに記述するだけです。 # デモイメージが存在するか、または Docker イメージが存在するかを確認します | grep demo &> /dev/null [ $? -ne 0 ]の場合 それから # 存在しない場合は処理しません echo "not existing demo" それ以外 # イメージが存在する場合、コンテナはデフォルトで実行されているとみなされます echo "existed demo" # コンテナとイメージの削除を停止します docker stop demoapi docker rm -f デモapi docker rmi デモ:v1 フィ # イメージを再構築して生成し、コンテナを実行します cd DemoWebApi/ # 指定したパスに公開する dotnet publish -c Release -o /publish # イメージを生成するためのパスを入力し、コンテナを起動します cd /publish docker build -t demo:v1 を実行します。 docker run --name demoapi -dp 5009:80/tcp demo:v1 保存したら、「今すぐビルド」をクリックして確認します。ビルドが失敗した場合は、コンソール出力で詳細なビルド プロセスとエラー情報を確認できます。 Gogs 管理 Web フック ページに戻り、再度プッシュします。成功すると、Jenkins が自動的にビルドして公開します。その後は、Master ブランチにプッシュする限り、自動的に公開されます。 要約する私は単純に自分の取り組みの全過程を記録しました。Jenkins と Docker には、使いながら徐々に理解する必要がある機能が他にもたくさんあります。 Gogs+Jenkins+Docker による .NetCore の自動デプロイの方法と手順についてはこれで終わりです。Docker による .NetCore の自動デプロイに関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL で 2 つのセットの交差/差/和を取得する方法
>>: JavaScript スロットリングとアンチシェイクに関する簡単な説明
最近ブログに書いたのですが、プロジェクトリストの中に写真がたくさんあり、最初は読み込みが遅いので、ス...
目次1. 参照と反応1. 反応的2.参照2. shallowRef と shallowReactiv...
目次ネット上の質問から生まれた思考MySQL ソースコマンドネット上の質問から生まれた思考今日仕事中...
この記事の例では、商品検索機能を実現するためのJavaScriptの具体的なコードを参考までに共有し...
解決 関数 mergeImgs(リスト) { const imgDom = document.cre...
1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと...
序文:インターネット技術の継続的な発展に伴い、MySQL 関連のエコシステムはますます充実し、ますま...
Flash ファイル形式: .FLV および .SWFフラッシュ ビデオ形式には、.flv と .s...
目次マクスウェルについてMaxwellの設定と使用1. Maxwellインストールパッケージをダウン...
1. 参照整合性参照整合性とは、主に外部キー制約を使用した複数のテーブル間の設計を指します。複数テ...
目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...
1. 問題を発見する© は HTML の著作権記号ですが、間違ったフォントを選択す...
ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...
ナビゲーションバーのサブメニューを再帰的に生成すると、メニューは正常に生成できるが、マウスをホバーす...
目次1. 自己増分値はどこに保存されますか? 2. 自己価値修正メカニズム3. 自動増分値を変更する...