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実行計画を学ぶ

推薦する

解決策 - BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 権限が不十分です

1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

CSS は、小さな鋭角のチャット ダイアログ ボックスで鋭角の吹き出し効果を実現します。

1. CSS を使用して、小さな尖った角のチャット ダイアログ ボックスと尖った角の吹き出しを描画...

MySQLが内部一時テーブルを使用するタイミングについて簡単に説明します。

組合執行分析を簡単にするために、次のSQLを例として使用します。 テーブル t1 を作成します ( ...

CSS で点線の境界線のスクロール効果を実装するサンプルコード

マウスをある領域の上に置くと、その領域に点線の境界線と線のアニメーションが表示されるというクールな効...

Web デザインのヒント: ページ レイアウトの簡単なルール

繰り返し: サイト全体で特定のページ デザイン スタイルを繰り返します。繰り返し要素としては、特定の...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

JavascriptとDOMの関係は非常に曖昧で、CSSやHTMLのフロントエンド技術層も理解してい...

CentOS 7.x に ZSH ターミナルをインストールする方法

1. 基本コンポーネントをインストールするまず、 yumコマンドを実行して、コードpullために必要...

Windows 64 ビットでの MySQL 8.0.13 のインストールと設定方法のグラフィック チュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

トランザクションとロックを表示するための MySQL の一般的なステートメント

データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

DockerにTomcatコンテナを追加したときにホームページにアクセスできない問題の解決方法

質問docker run コマンドを使用して、tomcat コンテナが正常に追加されました。ポートも...

コードレイン効果を実現するJavaScriptキャンバス

この記事では、コードレイン効果を実現するためのキャンバスの具体的なコードを参考までに共有します。具体...

UbuntuはSSHサービスのリモートログイン操作を開始します

ssh-secure シェルは、安全なリモート ログインを提供します。組み込みシステムを開発し、Li...