オンプレミスの開発ツールを使用してコマンドを実行し、アプリケーションの WAR または JAR パッケージを作成できます。その後、WAR または JAR パッケージに基づいてイメージを作成し、そのイメージを Alibaba Cloud イメージリポジトリにアップロードしてアプリケーションをデプロイできます。このトピックでは、Dockerfile を記述して Enterprise Distributed Application Service (EDAS) アプリケーションイメージを作成する方法と、そのイメージを Alibaba Cloud イメージリポジトリにアップロードする方法について説明します。
前提条件
「付録: 実行時の環境変数」およびこのトピックで説明されている手順を読んでいること。
使用上の注意
GitHub にアクセスして、このトピックで使用されている Dockerfile とイメージを照会できます。
仕様と制限
Dockerfile を使用して EDAS アプリケーションイメージを作成する前に、次の仕様が満たされ、次の制限が遵守されていることを確認してください:
サービス情報
サービス情報には、EDAS ドメイン名や実行時に接続するポートなどの情報が含まれます。
表 4. リソース
リソースタイプ
リソース名
説明
ConfigMap
edas-envs
EDAS サービス情報。
表 5. 環境変数
環境変数キー
タイプ
説明
EDAS_ADDRESS_SERVER_DOMAIN
文字列
設定センターのサービスドメイン名または IP アドレス。
EDAS_ADDRESS_SERVER_PORT
文字列
設定センターのサービスポート。
EDAS_CONFIGSERVER_CLIENT_PORT
文字列
ConfigServer のサービスポート。
必須: アプリケーション実行時の環境変数
EDAS は、アプリケーションをデプロイする際に、アプリケーションが期待どおりに実行されることを保証するための環境変数を提供します。環境変数の設定を上書きしないことを推奨します。詳細については、「付録: 実行時の環境変数」をご参照ください。
標準 Dockerfile の作成
Dockerfile はテキスト形式の設定ファイルです。Dockerfile を使用して効率的にイメージを作成できます。
ビジネス要件に基づいて、Dockerfile を使用して High-speed Service Framework (HSF)、Spring Cloud、または Dubbo アプリケーションのイメージを作成できます。以下の例では、異なるフレームワークを使用するアプリケーションの Dockerfile を作成する方法について説明します。
EDAS の標準 Dockerfile は、EDAS でアプリケーション実行環境を作成するためのすべての命令を記述します。これらの命令は、OpenJDK、Tomcat、WAR および JAR パッケージなどのコンポーネントをダウンロード、インストール、および開始する方法を理解するのに役立ちます。OpenJDK のバージョンを置き換えたり、Tomcat の設定を変更したり、実行環境を変更したりするなど、さまざまな目的で Dockerfile を変更できます。OpenJDK の詳細については、「カスタムイメージ: 最新の OpenJDK を使用する」をご参照ください。
Dockerfile の詳細については、次のセクションをご参照ください:
HSF アプリケーションの Dockerfile のサンプル
# ベースとして centos7 + openjdk8 + ali tomcat7 + pandora 3.5.9 を使用
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat7:latest
MAINTAINER Alibaba Cloud EDAS Team<edas-**@list.alibaba-inc.com>
ENV TZ="Asia/Shanghai"
# デフォルトでは、アプリケーションパッケージを /home/admin/app/ に配置します
ENV APP_HOME /home/admin/app/
#####----> 最初のケース: fat-jar ファイルをデプロイ
ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/HSF_PROVIDER.jar
#####----> 2 番目のケース: war ファイルをデプロイ、単に希望のファイル名に変更します。
#ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/HSF_PROVIDER.war
#####----> 3 番目のケース: ローカル記憶域ファイルをデプロイ。
#ARG APP_LOCATION=/Users/yanliang.lyl/workspace/java/demo/HSF_PROVIDER.war
# 次に、パッケージを /home/admin/app/ にダウンロードします
ADD ${APP_LOCATION} ${APP_HOME}/
# デフォルトの作業ディレクトリは /home/admin に設定されています
# WORKDIR /home/admin
# エントリポイントは /home/admin/bin/start.sh に設定されています、
# これは基本イメージ (apaas/edas-centos-openjdk8-alitomcat8) 内に含まれています
# CMD ["/home/admin/bin/start.sh"] Spring Cloud または Dubbo アプリケーションの Dockerfile のサンプル
# ベースとして centos7 + openjdk8 + tomcat8 を使用
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# デフォルトでは、アプリケーションパッケージを /home/admin/app/ に配置します
ENV APP_HOME /home/admin/app/
##### パッケージファイルを単純に置き換えます
#####----> 最初のケース: fat-jar ファイルをデプロイ
ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/DUBBO_PROVIDER.jar
#####----> 2 番目のケース: war ファイルをデプロイ、単に希望のファイル名に変更します。
#ARG APP_LOCATION=https://edas-hz.oss-cn-hangzhou.aliyuncs.com/prod/demo/DUBBO_PROVIDER.war
#####----> 3 番目のケース: ローカル記憶域ファイルをデプロイ。
#ARG APP_LOCATION=/Users/yanliang.lyl/workspace/java/demo/SPRINT_CLOUD_PROVIDER.war
# 次に、パッケージを /home/admin/app/ にダウンロードします
ADD ${APP_LOCATION} ${APP_HOME}/
EDAS ベースイメージの説明
アプリケーションの実行環境に基づいて、次のいずれかのベースイメージを使用できます。
イメージ名 | OS バージョン | Java バージョン | Tomcat バージョン | Pandora バージョン | 説明 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas | CentOS 7 | OpenJDK 1.8 | 8.5.78 | N/A | このイメージは apaas/edas-centos-openjdk8-tomcat8 と同じです。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-tomcat8 | CentOS 7 | OpenJDK 1.8 | 8.5.78 | N/A | 一般的な Spring Cloud または Dubbo アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-tomcat7 | CentOS 7 | OpenJDK 1.8 | 7.0.93 | N/A | Tomcat 7.x で実行される一般的な Spring Cloud または Dubbo アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat8 | CentOS 7 | OpenJDK 1.8 | 8.5.37 | 3.5.9 | Tomcat 8.x で実行される HSF アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat7 | CentOS 7 | OpenJDK 1.8 | 7.0.92 | 3.5.9 | Tomcat 7.x で実行される HSF アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat8-v4 | CentOS 7 | OpenJDK 1.8 | 8.5.37 | 4.0.2 | Tomcat 8.x で実行される HSF 4.0 アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos-openjdk8-alitomcat7-v4 | CentOS 7 | OpenJDK 1.8 | 7.0.92 | 4.0.2 | Tomcat 7.x で実行される HSF 4.0 アプリケーションには、このイメージを使用することを推奨します。最新のバージョン番号: latest。 |
paas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos7-openjdk17-tomcat9 | CentOS 7 | OpenJDK 17 | 9.0.70 | N/A | OpenJDK 17 と Tomcat 9.0.70 でビルドされたベースイメージ。最新のバージョン番号: latest。 |
apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas-centos7-openjdk17-tomcat10 | CentOS 7 | OpenJDK 17 | 10.1.41 | N/A | OpenJDK 17 と Tomcat 10.1.41 でビルドされたベースイメージ。最新のバージョン番号: latest。 |
その他のイメージについては、公式イメージリポジトリ aPaaS Docker Hub をご覧ください。追加のベースイメージが必要な場合は、DingTalk グループ (ID: 31723701) に参加してテクニカルサポートを受けてください。ベースイメージについて質問がある場合は、GitHub のベースイメージの Dockerfile を参照してください。
カスタムイメージ: 最新の OpenJDK を使用する
ビジネス要件に基づいて、作成した標準 Dockerfile でカスタム設定を指定できます。
OpenJDK のアップグレード: Dockerfile で最新の OpenJDK をダウンロードしてインストールできます。次の例は、OpenJDK 9 をダウンロードしてインストールする方法を示しています。
カスタムイメージを使用してアプリケーションをデプロイする場合、EDAS は OpenJDK 21 をサポートします。
# 以前のバージョンの OpenJDK をアンインストールし、OpenJDK 9 をダウンロードしてインストールします。
RUN yum erase -y java; yum -y install java-1.9.0-openjdk-devel カスタムイメージ: HSF アプリケーションの EDAS Container バージョンをアップグレードする
Container Service for Kubernetes (ACK) クラスターにデプロイされている HSF アプリケーションの場合、EDAS Container バージョンをアップグレードして、ミドルウェアの新機能を使用したり、以前のバージョンで発生する可能性のある既存の問題を修正したりできます。EDAS Container バージョンをアップグレードするには、次の手順を実行します:
にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[アプリケーション] ページで、[アプリケーションの作成] をクリックします。[基本情報] ステップの [アプリケーション実行環境] セクションで、[Pandora バージョン] および [Ali-Tomcat バージョン] パラメーターを設定します。
Dockerfile のバージョン番号 (3.5.4 など) を置き換えます。
# Pandora のバージョンを指定します。 ENV UPGRADED_CONTAINER_VERSION 3.5.4 RUN /home/admin/bin/upgradecontainer.shアプリケーションイメージを再度作成して公開します。
カスタムイメージ: イメージ内の JVM 起動パラメーターを変更する
JAVA_OPTS 環境変数は、ベースイメージに基づく Java 仮想マシン (JVM) パラメーターを渡すために使用されます。次の例は、JVM 起動パラメーターを変更する方法を示しています:
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# JVM パラメーター ENV を設定
JAVA_OPTS="\
-Xmx3550m \
-Xms3550m \
-Xmn2g \
-Xss128k" カスタムイメージ: Spring Boot アプリケーションの設定を変更する
EDAS ベースイメージに基づいて開発された FatJar アプリケーションの場合、コンテキストパス、起動ポート、パラメーターなどの Tomcat 起動設定を変更できます。これらのパラメーターは、APP_ARGS 環境変数に基づいて渡されます。次の例は、起動設定を変更する方法を示しています:
FROM apaas-registry.cn-hangzhou.cr.aliyuncs.com/apaas/edas:latest
# ベースイメージのデフォルト設定:
# - コンテキストパス (/) が使用されます。
# - ISO-8859-1 のエンコードされた Uniform Resource Identifier (URI) が使用されます。
# - アプリケーションはポート 8080 で起動します。
# - Tomcat が使用するスレッドプールの最大数は 400 です。
# 環境変数 APP_ARGS を書き換えて、デフォルト設定を変更することもできます。例:
ENV APP_ARGS="--server.context-path=/ \
--server.tomcat.uri-encoding=ISO-8859-1 \
--server.port=8080 \
--server.tomcat.max-threads=400"オンプレミスイメージのビルド
オンプレミスのコマンドラインツールを使用して Dockerfile があるディレクトリにアクセスします。次のいずれかの docker build コマンドを実行してイメージをビルドします:
docker build -t [ラベル名、できればアプリケーション名]:[バージョン]. docker build -t [ラベル名、できればアプリケーション名]:[バージョン] -f /path/to/custom_dockerfile_name. # このコマンドは、作成した Dockerfile が別の場所にある場合、または名前が Dockerfile でない場合に適用されます。例:
docker build -t hsf-provider:1.0.0 .次に、
docker images | grep <イメージラベル名>コマンドを実行して、パッケージ化されたオンプレミスイメージを表示します。
イメージリポジトリへのイメージのアップロード
オンプレミスのコンピューターで作成およびビルドされたアプリケーションイメージを Alibaba Cloud コンテナーイメージリポジトリにアップロードできます。
イメージをリポジトリにアップロードするには、次の手順を実行します: Container Registry コンソールにログインします。[インスタンス] ページで、EDAS で作成されたアプリケーションのリージョン、またはアプリケーションを作成するリージョンに切り替えます。必要に応じてインスタンスを選択します。左側のナビゲーションウィンドウで、[リポジトリ] をクリックします。イメージリポジトリリストを表示し、既存のイメージリポジトリを選択するか、イメージリポジトリを作成して、パッケージ化されたアプリケーションイメージを保存します。識別しやすくするために、アプリケーション名をリポジトリ名として使用することを推奨します。
オンプレミスイメージをイメージリポジトリにアップロードするには、[Container Registry] にイメージをプッシュするために使用されるコマンドを実行します。これらのコマンドは、指定されたイメージリポジトリの [詳細] ページで表示できます。
docker login --username=[現在のログインユーザー名] registry.[region_id].aliyuncs.com # Container Registry のデフォルトインスタンスのアクセス認証情報として使用される固定または一時パスワードを入力します。パスワードは Alibaba Cloud アカウントのものではありません。 docker tag [オンプレミスアプリケーションイメージの ID] registry.[region_id].aliyuncs.com/[名前空間名]/[リポジトリ名]:[イメージバージョン]
docker push registry.[region_id].aliyuncs.com/[名前空間名]/[リポジトリ名]:[イメージバージョン] 例:
docker login --username=td****@gmail.com registry.cn-hangzhou.aliyuncs.com
docker tag 2b64f63601a7 registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0 Alibaba Cloud イメージリポジトリのネットワークを高速化するには、次の手順を実行します: Container Registry コンソールにログインします。左側のナビゲーションウィンドウで、[イメージツール] をクリックします。次に、[イメージアクセラレーター] をクリックします。[イメージアクセラレーター] ページで、[ブースター URL] パラメーターの値を取得します。
付録: 実行時の環境変数
Dockerfile を使用してカスタムイメージを作成する場合、特定の環境変数が実行時に EDAS によって自動的に使用されます。次の表に、これらの環境変数を示します。
環境変数キー | タイプ | 説明 |
POD_IP | 文字列 | Pod の IP アドレス。 |
EDAS_APP_ID | 文字列 | EDAS アプリケーションの ID。 |
EDAS_PROJECT_NAME | 文字列 | このパラメーターは EDAS_APP_ID と同じです。このパラメーターはトレース解析に使用されます。 |
EDAS_JM_CONTAINER_ID | 文字列 | このパラメーターは EDAS_ECC_ID と同じです。このパラメーターはトレース解析に使用されます。 |
EDAS_CATALINA_OPTS | 文字列 | ミドルウェアの実行時に必要な CATALINA_OPTS パラメーター。 |
CATALINA_OPTS | 文字列 | このパラメーターは EDAS_CATALINA_OPTS と同じです。このパラメーターは Tomcat のデフォルトの起動パラメーターとして使用されます。 |
CATALINA_HOME | 文字列 | Tomcat パス。 |
PANDORA_LOCATION | 文字列 | Pandora パス。HSF アプリケーションで表示できます。 |
/home/admin/.spas_key/default ファイルは使用しないことを推奨します。このファイルは、Pod の実行時に上書きされます。