Docker+gitlab+jenkins は、ゼロから自動デプロイメントを構築します

Docker+gitlab+jenkins は、ゼロから自動デプロイメントを構築します

序文:

数日間の勉強と私自身の理解を経て、Docker+Jenkins の自動デプロイに関するチュートリアルをまとめました。不足している点がありましたら、さらにアドバイスをお願いします。ありがとうございます!

Docker の利点:

Docker を使用すると、開発者はアプリケーションと依存パッケージをポータブル コンテナーにパッケージ化し、それを一般的な Linux マシンに公開して仮想化を実現できます。 Docker は仮想化の方法を変え、開発者が自分の結果を直接 Docker に入れて管理できるようになりました。利便性とスピードはすでに Docker の最大の利点です。以前は数日、あるいは数週間かかっていたタスクも、Docker コンテナを使用すれば数秒で完了できます。
構造: クライアント → Docker_Host (ホスト) → ウェアハウス 3つの概念 コンテナ → イメージ → ウェアハウス

Jenkins を使用する理由:

従来のデプロイメント プロジェクトでは、プロジェクトが完了したら、コード リポジトリからローカルにコードをプルし、パッケージ化を完了してサーバーにアップロードし、プロジェクトの動作環境を構成して起動する必要があります。これには明らかに欠陥があります。開発中に存在するバグの中にはすぐには発見できないものもあり、後でバグを修正するときに連鎖反応が起こるリスクがあります。さらに、コードを修正した後は、それを再パッケージ化してサーバーにアップロードし、実行する必要があることがよくあります。プロジェクトが多数ある場合、このような反復的な機械的な操作に圧倒されてしまいます。
Jenkins を使用すると、真の自動デプロイメントを実現できます。コードが更新され、コード リポジトリにプッシュされると、Jenkins ビジュアル インターフェイスでビルド プロジェクトをクリックするだけで済みます。Jenkins は、設定したリポジトリ アドレスに従ってコードを自動的にプルし、自動的にパッケージ化して実行し、自動デプロイメントを完了します。


1. Dockerをインストールする

Docker を使用するには、CentOS カーネル バージョンが 3.10 以上である必要があります。このページの前提条件をチェックして、お使いの CentOS バージョンが Docker をサポートしているかどうかを確認してください。

1. uname -rコマンドで現在のカーネルバージョンを確認します。

uname -r は、

2. root権限でCentOSにログインします。 yum パッケージが最新バージョンに更新されていることを確認してください。

yum -y アップデート

3. 古いバージョンをアンインストールします(古いバージョンがインストールされている場合)

yum 削除 docker docker-common docker-selinux docker-engine

4. 必要なパッケージをインストールします。yum-util は yum-config-manager 機能を提供します。他の 2 つは devicemapper ドライバーの依存関係です。

yum インストール -y yum-utils デバイスマッパー永続データ lvm2

5. yumソースを設定する

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6. すべてのリポジトリのすべてのDockerバージョンを表示し、インストールする特定のバージョンを選択できます。

yum list docker-ce --showduplicates | sort -r

7. Dockerをインストールする

sudo yum install -y docker-ce #リポジトリでは安定リポジトリのみがデフォルトで有効になっているため、最新の安定バージョン 18.03.1 がここにインストールされます

8. 起動してブートに追加

systemctl start docker //dockerを起動する
systemctl enable docker //起動時に開始するように設定する

9. インストールが成功したかどうかを確認します (クライアントとサービス部分が存在する場合、Docker のインストールと起動が成功したことを示します)

docker バージョン

2. DockerでJenkinsをインストールする

1. リポジトリでJenkinsイメージを検索する

docker 検索 ジェンキンス        

jenkins は検索するイメージ名を示します。DESCRIPTION に jenkins が含まれるイメージも表示されます。

2. Jenkinsイメージをローカルイメージにプルする

docker pull ジェンキンス/ジェンキンス
ここでプルされたバージョンは jenkins/jenkins であることに注意してください。これは、以前の jenkins バージョンが 2.60 のみであったため、jenkins プラグインのインストールが失敗したためです。プル時にバージョンを指定できます。たとえば、docker pull java:8 は、プルされた java バージョンが 8 であることを意味します。バージョンを指定しない場合は、デフォルトで最新バージョンになります。

3. Jenkinsコンテナを起動する

docker run --name myjenkins -d -p 8081:8080 -p 8085:8085 jenkins/jenkins

–name myjenkinsはコンテナ名をmyjenkinsとして指定します
-dはバックグラウンドで実行することを意味します
-p 8081: 8080 は、Docker ホスト ポート (Docker を実行しているホスト) と Docker コンテナーで実行されているポート間のマッピングを示します。
8081 は DockerHost のポート、8080 はコンテナ内のポートです。8081 への外部アクセスは Docker コンテナのポート 8080 にアクセスできます。
jenkins/jenkins は、起動されたイメージが jenkins/jenkins であることを意味します。ローカル イメージは docker images を通じて表示できます。

例:
1. Docker ホストとコンテナ間のポート マッピングを設定する必要があるため、コンテナ内のポートに外部から直接アクセスすることはできません。複数のマッピングを設定できます。
プロジェクトは後でデプロイする必要があるため、プロジェクトのポート番号 -p 8085:8085 を事前に構成します。未構成のままにして、後でポート マッピング ファイルを変更することもできます。
2. 実際には、プル操作の 2 番目のステップを省略して、コンテナを直接起動することもできます。Docker はまず、このイメージがローカル イメージにあるかどうかを確認します。ない場合は、DockerHub ウェアハウスに移動してダウンロードします。


3. Jenkinsへのログインの初期化操作

1. Jenkins インターフェイスにアクセスします。たとえば、仮想マシンの IP が 192.168.199.188 の場合、192.168.199.188:8081 と入力して Enter キーを押すと、次のインターフェイスが表示されます。

ここに画像の説明を挿入

Jenkinsがインストールされているコンテナに入る

docker exec -it myjenkins bash // 指定されたコンテナに入ります。myjenkins はコンテナを起動したときにコンテナに指定した名前を表します。cat /var/jenkins_home/secrets/initialAdminPassword` // パスワードを表示し、パスワードをコピーしてテキスト ボックスに貼り付けます。

操作図:

ここに画像の説明を挿入

2. プラグインをインストールします。ここでは、Jenkins が推奨するプラグインをインストールします。

推奨プラグインをインストールするにはクリックしてください:

ここに画像の説明を挿入

3. インストールが進行中です。しばらくお待ちください。インストールが完了したら、[続行] をクリックします。

ここに画像の説明を挿入

4. 管理者ユーザーを作成するか、管理者アカウントを直接使用して続行します。

ここに画像の説明を挿入

5. インスタンス構成が直接保存されます。

ここに画像の説明を挿入

6. Jenkins の使用を開始します。

ここに画像の説明を挿入

7. Jenkins ホームページにアクセスします。

ここに画像の説明を挿入

4. グローバルツール構成(構成環境)

システム管理 - グローバルツール構成をクリックします

1. JDK を構成する: 自動インストールをキャンセルし (JDK 環境は通常コンテナ内にインストールされます)、docker コンテナに入り、 echo $JAVA_HOMEを使用して JDK インストール パスを取得し、そのパスを JAVA_HOME テキスト ボックスにコピーします。

ここに画像の説明を挿入

2. Mavenの設定: 名前を指定して自動的にインストールし、「保存」をクリックします。

ここに画像の説明を挿入

5. Mavenプラグインをインストールするシステム管理 – プラグイン管理をクリックします

ここに画像の説明を挿入

6. 自動展開を完了するための新しいタスクを作成する

1.ホームページに戻り、「新しいタスク」をクリックしてMavenプロジェクトをビルドします。

ここに画像の説明を挿入

2. [OK] をクリックしてホームページに戻ります。SpringBoot_AutoTest1 という追加のタスクが見つかりました (上記のタスクは前のものなので無視してください)

ここに画像の説明を挿入

3. プロジェクト名SpringBoot_AutoTest1をクリック --> [構成]をクリック

3.1 ソース コード管理 (Git リポジトリ アドレスを設定すると、Jenkins がリモート リポジトリからコードをプルします):

ここに画像の説明を挿入

3.2 ビルド構成 (Jenkin はコードを取得した後、パッケージ化コマンドを自動的に実行します):

ここに画像の説明を挿入

3.3 シェル スクリプトを構成します (Jenkins のパッケージ化が完了すると、シェル スクリプトが自動的に実行され、プロジェクトが開始され、自動デプロイが実現されます)。その後、保存します。

ここに画像の説明を挿入

添付のシェルスクリプト:

#!/bin/bash
# #!/bin/bash は、こ​​のスクリプトが /bin/bash を使用して解釈および実行することを意味します。このうち、#! は特別なインジケータであり、その後にこのスクリプトを解釈するシェル パスが続きます。 Bash はシェルの 1 つのタイプにすぎません。sh、csh、ksh、tcsh など、他にも多くのシェルがあります。
# #!/bin/bash は最初の行にのみ配置できます。その後に #! がある場合は、コメントとしてのみ扱われます。

#サービス名 SERVER_NAME = SpringBoot_AutotTest

#ソース jar パス。mm パッケージ化が完了したら、ターゲット ディレクトリ内の jar パッケージ名を war パッケージとして選択し、war パッケージを Tomcat に移動することもできます。
JAR_NAME=jekins-0.0.1-SNAPSHOT


#ターゲット パッケージは、jar パッケージのディレクトリを生成します。JAR_PATH=/var/jenkins_home/workspace/SpringBoot_AutotTest/target #特定のパッケージの場所に基づいて、プロジェクトを一度ビルドし、ログを通じてパッケージ化されたディレクトリを表示できます。#パッケージ化後、iar パッケージを jar パッケージが実行されるディレクトリに移動します。JAR_WORK_PATH=/var/jenkins_home/workspace/SpringBoot_AutotTest/target

echo "クエリプロセスID-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "プロセス ID を取得: $PID"
echo "プロセスを終了"
$PIDのID
する
-9 $id を殺す
echo "$id を強制終了しました" 
終わり
echo "終了プロセスが完了しました"

#jarパッケージを実行ディレクトリにコピーします_

echo"jar パッケージを実行ディレクトリにコピーします:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "jar パッケージの完全なコピー"
$JAR_WORK_PATH をコピーする
#ファイルの権限を変更する chmod 755 $JAR_NAME.jar

# フロントデスクの起動 #java -jar $JAR_NAME.jar

#バックグラウンド起動 BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &

docker+gitlab+jenkins でゼロから自動デプロイメントを構築する方法についての記事はこれで終わりです。docker+gitlab+jenkins による自動デプロイメントの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerはJenkinsを構築し、プロジェクトのパッケージ化とデプロイの手順を自動化します
  • Docker+jenkins+python3環境を使用して非常に詳細なチュートリアルを構築する
  • Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します
  • Docker で Jenkins サービスを構築する例
  • Docker環境でJenkinsを設定すると、タスクをビルドするときにコンソールログに文字化けした中国語の文字が表示されます
  • Dockerを使用したJenkins自動化ツールの実装

<<:  MySQL CHARとVARCHARの選択方法

>>:  ウェブサイトのユーザビリティを向上させる10のヒント

推薦する

background-positionプロパティでのパーセンテージ値の使用法の検討

背景位置が背景画像の表示に与える影響この2日間のプロジェクトでホームページの写真を入れ替えていたとこ...

MySQL で '%' を含むフィールドをクエリする方法の詳細な説明 (ESCAPE の使用法)

SQLのlike文では、例えば SELECT * FROM user WHERE username...

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

DockerがMySQL構成実装プロセスを開始

目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...

Vue の高度な構築プロパティの詳細な説明

目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...

Vue のリスナーの基本的な使用例

目次序文1. リスナーの基本的な使い方2. リスナー形式3. ページに入るとすぐに監視とディープモニ...

MySQLクエリステートメントの簡単な操作例

この記事では、例を使用して、MySQL クエリ ステートメントの簡単な操作を説明します。ご参考までに...

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

レスポンシブレイアウトについて知っておくべきこと

1. はじめにレスポンシブ Web デザインにより、Web サイトは複数のデバイスと複数の画面に同時...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

Reactは無限ループスクロール情報を実装する

この記事では、無限ループスクロールを実現するためのReactの具体的なコードを参考までに紹介します。...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

nginx の 2 つのモジュールの proxy_pass の違い

1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティ...

Web フロントエンドのパフォーマンス最適化の詳細説明: リソースのマージと圧縮

2つの目的のためのリソースの結合と圧縮httpリクエストの数を減らす要求されたリソースのサイズを縮小...

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...