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のヒント

推薦する

MySQLデータベースのストアドプロシージャとトランザクションの違い

トランザクションは、複数の SQL ステートメントの原子性、つまり、それらが一緒に完了するか、一緒に...

DockerでRabbitMqの共通クラスタとミラークラスタを構築する詳細な操作

目次1. RabbitMqの動作環境を構築する1.検索を通じてrabbitmqイメージを照会する2....

タグのターゲットリンクを iframe に向ける方法

コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。 Ng...

Mysql 5.7.18 MySQL proxies_priv を使用して同様のユーザーグループ管理を実装する

MySQL proxies_priv(シミュレートされたロール)を使用して同様のユーザーグループ管理...

Vue でスロットを使用する方法についての簡単な説明

定義と使用方法:コンポーネントのテンプレートでスロットタグの定義を使用します。デフォルトの表示値は、...

Mysql一時テーブルの原理と作成方法の分析

この記事は主にMysql一時テーブルの原理と作成方法を紹介します。この記事のサンプルコードは非常に詳...

Nginx をインストールして複数のドメイン名を設定する方法

Nginx のインストールCentOS 6.x yum にはデフォルトで nginx ソフトウェア ...

Ubuntu で G++ を使用して CPP ファイルをコンパイルする

g++ を使用して初めて cpp ファイルをコンパイルしたとき、未定義の参照エラーが報告されました。...

vuex で履歴を実装するためのサンプルコード

私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...

MySQL 5.7 JSON 型の使用の詳細

JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...

MySQL レプリケーションの原理と実際のアプリケーションの詳細な説明

この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...