ホームページ  >  記事  >  Java  >  Javaプログラムを使用してDocker Imageを作成する方法とプロセス

Javaプログラムを使用してDocker Imageを作成する方法とプロセス

不言
不言オリジナル
2018-09-19 15:35:332158ブラウズ

この記事の内容は Java プログラムで Docker Image を作成する方法とプロセスに関するものです。必要な方は参考にしていただければ幸いです。

要件

ここでは、Docker イメージを作成するための要件をいくつか示し、その後、その方法を見ていきます。

  1. #制作プロセスはプロジェクト構築プロセスに統合する必要があります

  2. #公式画像をベース画像として使用します
  3. 正しいタイムゾーンを設定します
  4. コンテナ内のプログラムは非 root ユーザーとして起動されます
  5. インターフェースを指定しますWeb プログラムの
  6. #JVM パラメータ、Java システム プロパティ、およびプログラム定義パラメータを渡すことができるようにする
  7. 達成する方法について話しましょう上記の点を詳しく説明します。

制作プロセスはプロジェクト構築プロセスに統合する必要があります。

Spotify の dockerfile-maven-plugin を使用することをお勧めします。これは、このプラグインが最も使いやすく簡単であるためです。マスターする。

このプラグインの本質は、Dockerfile を作成することです (Dockerfile の具体的な作成方法については、公式ドキュメントを参照してください)。このプラグインは、Docker イメージの構築に役立ついくつかのパラメーターを渡します。

したがって、Dockerfile を作成できる限り、このプラグインを使用することになります。追加の概念は追加されません。

公式イメージをベース イメージとして使用する

Java の基本イメージは、古い Java リポジトリではなく、openjdk リポジトリにあるはずです。

openjdk リポジトリには、まばゆいばかりに見えるさまざまなイメージ タグが用意されていますが、本質的にはほんの数個です:

    openjdk:
  • openjdk:-slim
  • openjdk:-alpine
  • ## について#
一般的には、より大きいバージョン番号を指定するだけです。たとえば、次のように Dockerfile に記述できます。

FROM openjdk:8-alpine
サイズに関しては、alpine が最小であり、slim がわずかに大きくなります。 、およびデフォルトの最大値。したがって、プログラムの実行環境に不足がある場合は、できるだけ Alpine バージョンを使用する必要があります。その場合は、スリム バージョンまたはデフォルト バージョンを使用するようにしてください。現在の経験に関して:

オペレーティング システムのフォント ライブラリが必要な場合は、スリム バージョンまたはデフォルト バージョンを使用する必要があります。画像検証コードや PDF エクスポートなど、オペレーティング システムのフォント ライブラリを必要とするプログラム。
  • Linux 標準のダイナミック/スタティック リンク ライブラリが必要な場合、アルパイン バージョンが機能しない場合は、スリム バージョンまたはデフォルト バージョンを試してください。アルパイン バージョンは Linux の非常に合理化されたバージョンであるため、多くのものが削除されています。
  • 正しいタイム ゾーンを設定する
ほとんどすべての Docker イメージのタイム ゾーンは UTC です。自分で作成した Docker イメージのタイム ゾーンを設定する必要があります。 ##
ENV TZ=Asia/Shanghai
RUN set -eux; \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
    echo $TZ > /etc/timezone

コンテナ内のプログラムは非 root ユーザーとして起動されます

Docker イメージでは、非 root ユーザーを使用してプログラムを起動する必要があり、これには gosu の使用が必要です。

gosu の Dockerfile ガイドはこちらです。

さまざまな基本イメージに応じて、適切なインストール方法を選択してください。

Web プログラムのインターフェイスを指定する

ネットワーク アプリケーションの場合、公開ポートを Dockerfile で指定する必要があります。指定しないと、ポートをマッピングできません。

EXPOSE 8080

JVM パラメータ、Java システム プロパティ、およびプログラム定義パラメータを渡せるようにする

Docker イメージを起動するときにいくつかのパラメータを渡せるようにする必要があります:

JVM パラメータ

  • Java システム プロパティ

  • プログラム起動パラメータ

  • これは Dockerfile のベスト プラクティスと Docker ENTRYPOINT を参照する必要があります。

  • サンプル プロジェクト

サンプル プロジェクトのソース コードはここにあります: https://github.com/chanjarster/dockerfile-examples/

ディレクトリ構造

プログラム関連のものはすべて

/home/java-app/

に保存されます:

/home/java-app
   ├── docker-entrypoint.sh
   ├── lib
   │   └── java-app.jar
   ├── etc
   ├── logs
   └── tmp

docker-entrypoint.sh、起動スクリプト lib、JAR パッケージ ## を保存

#lib/java-app.jar、プログラム JAR パッケージ

etc、設定ファイルの保存

logs、ログ ファイルの保存

tmp、一時ファイルの保存

イメージの構築方法

mvn clean package dockerfile:build
実行

通常起動後、

http://localhost:8080

:

docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT

Set JVM パラメータ、

JVM_OPTS 環境変数を使用します:

docker run -p 8080:8080 -e JVM_OPTS='-Xmx128M -Xms128M' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
システム プロパティを設定します、

JAVA_ARGS 環境変数を使用します:

docker run -p 8080:8080 -e JAVA_ARGS='-Dabc=xyz -Ddef=uvw' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
プログラム実行パラメータを指定します。追加するだけです。後で直接:

docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT --debug

以上がJavaプログラムを使用してDocker Imageを作成する方法とプロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。