環境説明
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 スロットリングとアンチシェイクに関する簡単な説明
操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...
たとえば、現在のパスが /var/log で、/usr ディレクトリに移動する場合は、次のコマンドを...
vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコード...
これまでの仕事では、開発サーバーは一般的にTomcatでした。データソースは、多くの場合、appli...
目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...
目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...
写真をアップロードするので、まずはダウンロード可能な画像リソースかどうかを判断する必要があります。正...
1. 原因:サブボックスをフロートに設定した後の効果: 青いボックスをフロートに設定すると、標準のド...
Vue スキャフォールディングでは、エントリ ファイル main.js の新しい Vue コードに、...
1. Tclスクリプトファイルcircle.tclコードコメント #シミュレーションに必要なプロパテ...
プロジェクトの要件は、日付と時刻を選択し、現在の時刻以降の時刻のみを選択し、最小レベルを分単位で無効...
効果プレビュー右側の「クリックしてプレビュー」ボタンを押すと現在のページでプレビューが表示され、リン...
iOS 1. URLスキームこのソリューションは基本的に、WeChat、QQ 組み込みブラウザ、QQ...
1. リストクエリインターフェースの効果コード処理ロジックを紹介する前に、まずは感覚的に理解し、レン...
日常の開発では、データベースの追加、削除、変更、クエリが一般的に行われるため、Mysql で NUL...