Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します

Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します

プロジェクト開発では、開発やテストのためにローカルで環境を設定する必要があることがよくあります。ご存知のように、環境の設定、ソフトウェアのインストール、ミドルウェアのインストールは非常に面倒な作業です。一部のソフトウェアのインストールは、他の環境のインストールに依存する必要がある場合があります。たとえば、rabbitmq をインストールするには、まず Erlang 言語環境が必要です。セット全体をインストールすると、時間が無駄になるだけでなく、さまざまな問題が発生し、開発の進行に重大な影響を及ぼします。開発者にとって人生は短いので、開発効率を向上させるためにあらゆる手段を講じてください。

Docker の登場は、テクノロジー コミュニティにとって間違いなく画期的な出来事です。Docker は、豊富なアプリケーション イメージ リポジトリ、使いやすさ、移植性により、IT プロフェッショナルに深く愛されています。 Docker を使用して対応するアプリケーションをデプロイまたはインストールする場合、インストール プロセス、詳細、依存関係に多くの時間を費やす必要はなく、すぐに使用できます。この記事では、Jenkins の構築を例に、イメージのプル、コンテナの実行、ファイルのマウント、操作の追跡、コンテナのシャットダウンなど、Docker の基本的な操作プロセスを説明します。Docker を使い始めたばかりの技術愛好家にとって役立つことを願っています。

Docker の基本概念

Docker はオープンソースのアプリケーション コンテナ エンジンであり、開発者はこれを使用してアプリケーションと依存関係をポータブル コンテナにパッケージ化し、一般的な Linux マシンに公開することができます。実際、Docker の最も典型的な図は「背中にコンテナを載せたイルカ」であり、これは Docker エンジンとコンテナの関係を完全に示しています。
基本的に、イメージ、コンテナ、ウェアハウスを習得すると、Docker を十分に理解でき、Docker を正しく使用できるようになります。

  • イメージ: アプリケーションの「ソース コード」または.exeインストール ファイルとして理解できます。
  • コンテナ: 実行後のイメージのインスタンスです。イメージとの関係は、「オブジェクト」と「クラス」の関係に似ています。
  • ウェアハウス: イメージを公開するためのウェアハウス。ウェアハウスからさまざまなイメージ (アプリケーション) をダウンロードまたはプルできます。Docker は、コンテナを実行するために必要なエンジンです。すべてのコンテナは、エンジン内で実行されます。

Docker インストール プロセス (Centos6.9)

カーネルのアップグレード

Centos6.9では、Dockerをインストールする前にカーネルバージョンをアップグレードする必要があります。アップグレードのプロセスは次のとおりです。
1. キーの紹介

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm 

2.yumのインストール

yum --enablerepo=elrepo-kernel -y カーネル-ltをインストールします 

3. ブートファイルの変更( grub.conf

vim /etc/grub.conf 

デフォルトを 0 に設定、デフォルト = 0

4. 再起動

docker-ioをインストールする

1. EPELソースをインストールする

yum でインストール http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm 

2. docker-ioをインストールする

yum -y docker-io をインストールします 

3. dockerサービスを起動する

サービスdocker開始

Docker ベースの Jenkins インストール

プルアプリケーション

コンテナ/インスタンスを実行する前に、docker hub リポジトリから対応するイメージをプルする必要があります。jenkins イメージの紹介については、公式 Web サイトを確認してください。そこには、インストール コマンド、構成情報、ファイル ディレクトリの詳細な手順が記載されています。
リポジトリから最新の Jenkins をプルしdocker pull jenkins 、コマンドdocker pull jenkins:<version>で他のバージョンをプルします。

コンテナの実行

コンテナ/インスタンスを実行するときは、ローカル ホスト経由でアクセスできるように、ローカル ポートを Docker コンテナにマッピングすることを考慮する必要があります。コンテナ自体はファイルを保持しないため、Docker ではコンテナ内でファイル関連の書き込み操作を実行することは推奨されません。コンテナは「コンテナ」としてのみ使用されます。コンテナ アプリケーションの動作中に、MySQL データベース ファイル、Jenkins プラグイン、構成ファイルなどの重要なデータを大量に保存または構成する必要がある場合は、コンテナ ファイルをローカルにマウントすること、つまりボリューム マッピングをお勧めします。

docker run -p 8080:8080 -p 50000:50000 -v /usr/local/docker_volume/jenkins:/var/jenkins_home -v /usr/local/apps/maven-3.3.9:/var/maven_home -v /usr/local/apps/maven-3.3.9/repo:/usr/local/apps/maven-3.3.9/repo --name my_jenkins -d jenkins

ここで、-p はポート マッピング、つまりローカル マシン上のポートをコンテナー上のポートにマッピングすることを意味します。
-vはファイルマッピングを意味します。つまり、ローカルマシンとコンテナはマッピングを共有し、ファイルをマウントします。
: Jenkins は Maven プロジェクトをビルドするために Maven プロジェクトに依存する必要があるため、コンテナの実行時にローカルの Maven_home がコンテナと共有されます。コンテナは実行中にローカル共有ファイルに書き込む必要があるため、書き込み権限が必要です。sudo chown -R 1000 sudo chown -R 1000:1000 /usr/local/docker_volume/jenkins sudo chown -R 1000:1000 sudo chown -R 1000:1000

上記のコマンドを実行すると、コンテナ ID がウィンドウに表示されます。実行中のコンテナのステータスと関連情報はdocker psで確認できます。

アプリケーションログの追跡

コンテナの印刷ログを追跡するには、 docker logs <CONTAINER ID>と入力します。Jenkins を初めて起動すると、パスワードがログに印刷されます。それをコピーして、Jenkins にログインするときに使用します。

開いた容器を閉じる

シャットダウン: docker stop <CONTAINER ID>
開く: docker start <CONTAINER ID>

tomcat アカウント設定

この例では、Mavenによってコンパイルされたwarがリモートのtomcatにデプロイされるため、tomcatでデプロイメント権限を設定し、 /con/tomcat-users.xml tomcat-users.xml構成ファイルを編集して、アカウントを追加する必要があります。

<ロール ロール名="tomcat"/>
<ロール ロール名="管理者"/>
<ロール ロール名="admin-gui"/>
<ロール ロール名="マネージャー"/>
<role rolename="マネージャー GUI"/>
<role rolename="マネージャースクリプト"/>
<ロール ロール名="マネージャー-jmx"/>
<role rolename="マネージャーステータス"/>
<ユーザー ユーザー名="admin" パスワード="admin" 役割="admin、マネージャー、tomcat、マネージャー GUI、マネージャー スクリプト、マネージャー JMX、マネージャー ステータス"/>
<ユーザー ユーザー名="root" パスワード="admin" 役割="admin、manager、tomcat、manager-gui、manager-script、manager-jmx、manager-status、admin-gui"/>

Jenkins を設定して WAR アプリケーションをビルドおよびデプロイする

この時点で、 http://本機ip:8080にアクセスして Jenkins プラットフォームにアクセスし、デフォルトのインストール プラグインを選択し、インストールが成功したらアカウント設定などを選択できます。

JDK、Maven、その他のパラメータを設定する

以下に示すように、「システム設定 -> グローバルツール構成」にJDKのインストールを追加します。

set01

set_02

set_03

「システム設定 -> プラグインの管理 -> オプションのプラグイン」で、WAR プログラムをデプロイするための「コンテナ プラグインへのデプロイ」プラグインをインストールします。

ビルドとデプロイのための新しいタスクを作成する

SVNソースコードアドレスとTomcatデプロイメントアドレスを追加する

set_04

set_07

Tomcatの展開構成、Tomcatにログインするためのアカウントを構成する

set_06

set_08

ssh スクリプトを使用して、指定された Tomcat に Maven プロジェクトをデプロイします。

上記の方法を使用して Tomcat の組み込みデプロイメントでデプロイメントを実装すると、サーバーのパフォーマンスが大幅に消費され、メモリ オーバーフローなどの問題が発生してデプロイメントが失敗することがよくあります。 ssh スクリプトの展開方法ははるかに便利で高速であり、それほど多くのメモリを消費しません。

SSH経由の公開プラグインを設定する

「システム設定 -> 管理プラグイン -> オプションプラグイン」で (Publish Over SSH) プラグインをインストールし、「システム管理 -> システム設定 -> Publish over SSH」で公開する Linux サーバーのログイン情報を設定します。設定内容と具体的な意味は下図の通りです。設定が完了したら、[設定のテスト] ボタンをクリックして、接続が確立されているかどうかをテストします。「成功」と表示されれば、設定は成功です。

ssh登錄

デプロイメントSSHスクリプトを書く

次のシェル スクリプトdeploy.shサーバーの/home/admin/dataディレクトリに保存し、 chomd +x deploy.shの実行権限を付与します。つまり、上記の ssh ログイン構成図のRemote Directoryディレクトリに実行権限を付与します。この構成は、Jenkins が Tomcat が配置されている Linux サーバーにログインした後、 ./deploy.sh deploy.sh を使用してデプロイメント操作を実行できることを意味します。 demploy.sh別のディレクトリに配置されている場合は、絶対パス/..dir../..dir../deploy.shを使用して実行できます。

#!/bin/bash
# ファイル: ff=unix を設定する
#定義済み 
JAVA_HOME=/usr/local/java をエクスポートします。
#Tomcat のデプロイ場所TOMCAT_HOME="/home/admin/data/tomcat-jenkins"
# ログイン後のサーバーユーザーディレクトリは、上の図で構成されているリモートディレクトリ設定と同じです。LOGIN_HOME="/home/admin/data"
TOMCAT_ポート=10092
プロジェクト="$1"
#パラメータ検証
[ $# -lt 1 ]の場合;
  echo "次のように使用する必要があります: ./deploy.sh <プロジェクト名> [tomcat ポート] [tomcat ホーム ディレクトリ]"  
  出口
フィ
[ "$2" != "" ] の場合;
   TOMCAT_PORT=$2
フィ
[ "$3" != "" ] の場合;
   TOMCAT_HOME="$3"
フィ
#Tomcatをシャットダウンする
#"$TOMCAT_HOME"/bin/shutdown.sh
#echo "Tomcat シャットダウン"
#Tomcatプロセスをチェック

#tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
tomcat_pid=`ps -ef | grep $TOMCAT_HOME | grep -v 'grep\|tail\|more\|bash\|less'| awk '{print $2}'`
echo "現在:" $tomcat_pid
[ -n "$tomcat_pid" ] の間
する
 睡眠5
 tomcat_pid=`ps -ef | grep $TOMCAT_HOME | grep -v 'grep\|tail\|more\|bash\|less'| awk '{print $2}'`
 echo "Tomcat PID をスキャン:" $tomcat_pid
 [ -n "$tomcat_pid" ]の場合;
   echo "Tomcat を終了:" $tomcat_pid
   強制終了 -9 $tomcat_pid
 フィ
終わり
#プロジェクトを公開
echo "スキャンなし tomcat pid、$PROJECT 公開"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT
cp "$LOGIN_HOME"/war/$PROJECT.war "$TOMCAT_HOME"/webapps/$PROJECT.war
#bakプロジェクト
#BAK_DIR=/home/web_as/war/bak/$PROJECT/`日付 +%Y%m%d`
#mkdir -p "$BAK_DIR"
#cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
#tmp を削除
rm -rf "$LOGIN_HOME"/war/$PROJECT.war
#Tomcatを起動
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat が起動しています。$PROJECT コンソール URL にアクセスしてみてください"

プロジェクトビルド構成

以下のように設定を保存したら、Maven プロジェクトをビルドできます。Jenkins はコンパイルされた war プロジェクトを192.168.1.12サーバーに対応する tomcat パスにコピーし、Tomcat を起動してプロジェクトをデプロイします。

項目構建配置

これで、docker を使用して Jenkins + Maven のコード ビルドおよびデプロイメント プラットフォームを構築する方法についての記事は終了です。docker を使用して Jenkins + Maven を構築することに関するその他の関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  http-proxy-middlewareを使用してNodeでプロキシクロスドメインを実装する方法と手順

>>:  MySQL実行計画を学ぶ

推薦する

Dockerのオンラインおよびオフラインインストールと一般的なコマンド操作

1. テスト環境名前バージョンセント7.6ドッカー18.09.06 2. オンラインインストールここ...

vue3 の setUp とリアクティブ関数の使用方法の詳細な説明

1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...

Zen Coding 簡単で素早いHTMLの書き方

禅コーディングテキストエディタプラグインです。 Zen Coding を使用するテキスト エディター...

JavaScript で実装された 7 つのソート アルゴリズムの概要 (推奨!)

目次序文バブルソート基本アルゴリズム2 番目の書き方は、基本的なアルゴリズムに基づいて改良されていま...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

IIS 7.5はURL書き換えモジュールを使用してWebページのリダイレクトを実現します。

Apache では構成ファイルで Web ページまたは Web サイトの書き換えを簡単に設定できる...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...

Docker は次の「Linux」になれるか?

Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...

TSオブジェクトのスプレッド演算子とレスト演算子の詳細な説明

目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...

nginx リバース プロキシの魔法のスラッシュについての簡単な説明

nginx リバース プロキシを設定する場合、location と proxy_pass のスラッシ...

MySQL8の再帰メソッドの使い方を教える

以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...

HTML テーブルタグチュートリアル (11): 水平方向の配置属性 ALIGN

水平方向では、テーブルの配置を左、中央、右に設定できます。基本的な構文<テーブル配置=&quo...

Linux システムで httpd の自動インストールと構成を Ansible で実装する方法

1. Ansibleのプレイブックを使用してhttpdを自動的にインストールする1) まず、Ansi...

Unicode の数学記号の概要

数学、物理学、および一部の科学技術分野で使用される特殊記号は多数あります。Unicode コードには...

支払いカウントダウンを実現し、ホームページに戻るためのjs

ホーム ページに戻るための支払いカウントダウン ケースの概要: シンプルな js 構文、getEle...