Maven+Tomcat 基本イメージを構築する Docker の実装

Maven+Tomcat 基本イメージを構築する Docker の実装

序文

Javaプログラミングでは、ほとんどのアプリケーションはMavenに基づいて構築されており、配信される結果は主にTomcat warパッケージの形式です。そのため、MavenとTomcatに基づいて基本イメージを構築する必要があります。これにより、日常の独立した実験研究と分析の効率が向上するだけでなく、運用とメンテナンスをある程度削減し、Dockerfileの作成の複雑さを軽減し、プロジェクト全体の配信効率を向上させることができます。

1. コンパイルディレクトリを作成する

mkdir -p ビルドdocker
ビルド_docker
vim Dockerファイル

2. Dockerfileを書く

まず、公式にメンテナンスされている maven:3.3.3 イメージをベースイメージとして選択し、これに基づいて Tomcat サポートを追加します。

Maven:3.3.3より

国内倉庫のスピードがお好みなら、Alibabaのmaven:3-jdk-8も選択できます。

registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8 から

次に、Tomcat 関連の環境変数を設定し、システム PATH 変数に追加して、シェルで Tomcat の起動スクリプトに直接アクセスできるようにします。

ENV CATALINA_HOME /usr/local/tomcat
環境変数 PATH $CATALINA_HOME/bin:$PATH
mkdir -p "$CATALINA_HOME" を実行します。
ワークディレクトリ $CATALINA_HOME

3 番目に、Tomcat GPG-KEY を追加します。これは、Tomcat がファイルをダウンロードした後に、ファイルが正しいかどうかを確認するために使用されます。次の keyid データは、公式の Tomcat-8 から取得されます。

gpg --keyserver pool.sks-keyservers.net --recv-keys を実行します \
F22C4FED \
86867BA6 \
E86E29AC \
307A10A5 \
564C17A3 \
0x7C037D42 \
0BECE548 \
5E763BEC \
2F6059E7 \
288584E7 \
4B6FAEFB \
286BACF1 \
731ファビー \
461B342D \
0D498E23 \
DC3D1B18 \
D63011C7 \
30480593

4 番目に、Tomcat バージョン変数を設定します。ビルド中に Tomcat バージョンを変更するには、対応するパラメータを渡すことができます。 maven:3.3.3 イメージが依存する Java バージョンは 1.8 なので、Tomcat にも 8.X バージョンを選択します。コンパイルの一貫性を維持することで、Tomcat のパフォーマンスを最大限に高めることができます。

ここでは最新バージョン8.5.45を選択します。

次に、curl を使用してダウンロードし、検証後に解凍し、余分な bat スクリプトを削除します。 (このスクリプトは Windows 環境でのみ使用され、Linux/Mac イメージでは役に立ちません)

環境変数 TOMCAT_VERSION 8.5.45
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

実行set -x \
  && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
  && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
  && gpg --verify tomcat.tar.gz.asc \
  && tar -xvf tomcat.tar.gz --strip-components=1 \
  && rm bin/*.bat \
  && rm tomcat.tar.gz*

5 番目に、Tomcat のデフォルト ポート 8080 を公開し、このイメージに基づくコンテナーの起動時に実行されるスクリプトを指定します。このスクリプトは、Tomcat の起動スクリプトです。

エクスポーズ8080
CMD ["catalina.sh", "実行"]

3. イメージを構築する

ビルドは docker -t base-maven-tomcat です。

これで完了です。

添付ファイル: 完全な Dockerfile ファイル

Maven:3.3.3より

ENV CATALINA_HOME /usr/local/tomcat
環境変数 PATH $CATALINA_HOME/bin:$PATH
mkdir -p "$CATALINA_HOME" を実行します。
ワークディレクトリ $CATALINA_HOME

gpg --keyserver pool.sks-keyservers.net --recv-keys を実行します \
F22C4FED \
86867BA6 \
E86E29AC \
307A10A5 \
564C17A3 \
0x7C037D42 \
0BECE548 \
5E763BEC \
2F6059E7 \
288584E7 \
4B6FAEFB \
286BACF1 \
731ファビー \
461B342D \
0D498E23 \
DC3D1B18 \
D63011C7 \
30480593

環境変数 TOMCAT_VERSION 8.5.45
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

実行set -x \
  && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
  && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
  && gpg --verify tomcat.tar.gz.asc \
  && tar -xvf tomcat.tar.gz --strip-components=1 \
  && rm bin/*.bat \
  && rm tomcat.tar.gz*

エクスポーズ8080
CMD ["catalina.sh", "実行"]

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerはjenkins+mavenコード構築および展開プラットフォームを構築します
  • DockerイメージをビルドするためのMavenプラグインの実装手順
  • Maven プラグインを使用して Docker でイメージをビルドする方法
  • Mavenプラグインを使用してDockerイメージを構築する方法についての簡単な説明
  • Docker で Maven プロジェクトをより速くビルドする

<<:  Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

>>:  MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

推薦する

CSS の inline-block の最小幅値の詳細な説明

序文最近、私は夜に時間を取って「CSS World」という本を読んでいます。この本は非常に興味深く、...

テキストの展開と折りたたみの効果を実現するJavaScript

リスト形式のテキストの展開と折りたたみの実装は参考までに。具体的な内容は以下のとおりです。必要: 1...

ポップアップウィンドウの上下中央左右と透明な背景のロックウィンドウ効果を実現する CSS

クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...

Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

1. コンテナにnginxサービスをデプロイするcentos:7 イメージはコンテナを実行し、このコ...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

HTML タグ: サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。関連記事: HTML タ...

Linuxドライバのプラットフォームバスの詳細説明

目次1. プラットフォームバスの紹介1.1. Linuxドライバの分離と階層化1.1.1. Linu...

LeetCode の SQL 実装 (178. スコアランキング)

[LeetCode] 178.ランクスコアスコアをランク付けする SQL クエリを記述します。2 ...

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...

Linux でユーザーをグループに追加する 4 つの方法の概要

序文Linux グループは、Linux でユーザー アカウントを管理するために使用される組織単位です...

Javascript における分割代入構文の詳細な説明

序文ES6 で初めて導入された「構造化代入構文」を使用すると、配列やオブジェクトの値を異なる変数に挿...

Linux chkconfig コマンドの使用

1. コマンドの紹介chkconfig コマンドは、システム サービスの実行レベル情報を更新および照...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

MySQL 8.0.18 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...

CSS スタイルのリセットとクリア (異なるブラウザで同じ効果を表示するため)

異なるブラウザ間でページの表示を一致させるためには、フロントエンド開発において CSS スタイルのク...