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

推薦する

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

Reactはいくつかの方法でパラメータを渡します

目次親コンポーネントと子コンポーネント間でパラメータを渡すルーティングパラメータステータスの改善コン...

イメージを再構築せずにDockerにポートを動的に追加する方法

操作中に Docker コンテナの公開ポートを変更または追加する必要がある場合がありますが、実行中の...

MySQL 8.0 の非表示列に対する基本操作

目次01 非表示の列を作成する02 非表示の列に対する基本操作03 非表示の列メタデータ04 主キー...

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

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

JSで実施された機雷掃海プロジェクトの概要

この記事では、JS掃海プロジェクトの概要を参考までに紹介します。具体的な内容は次のとおりです。プロジ...

パスワードログインなしのLinux構成スタンドアロンおよびフルディストリビューションの詳細なチュートリアル

目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...

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

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

JSに関する7つの面接の質問、あなたはいくつ正しく答えられますか

序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...

MySQL でトランザクションのコミットとロールバックを実装する方法の詳細な例

最近、データベース データのスケジュールされた移行を実行する必要があります。実行プロセス中に何らかの...

CSS3はNESゲームコンソールのサンプルコードを実装します

成果を達成する実装コードhtml <input type="radio" ...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...

MySQL のグループ分けの例

mysql のような php switch case ステートメント。 xxフィールドを選択、ケース...

Docker を使用して Go Web アプリケーションをデプロイする方法

目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...