Spring Cloud、Dubbo、またはHSFフレームワークから開発およびコンパイルされたWARまたはJARパッケージをServerless App Engine (SAE) にイメージとしてデプロイする場合は、そのパッケージをアプリケーションイメージとして使用する必要があります。 このトピックでは、イメージを作成するための使用方法、さまざまなコードパッケージでコンパイルされたJavaアプリケーション用のイメージを作成する方法、およびイメージリポジトリにイメージをアップロードする方法について説明します。
使用上の注意
Dockerfileからカスタムイメージを作成すると、SAEは実行時に次の環境変数を自動的に挿入します。
アプリケーションを期待どおりに実行するには、次の環境変数を上書きしないでください。
/home/admin/.spas_key/defaultディレクトリのファイルは使用しないでください。 このファイルは、ポッドの実行時に上書きされます。
VOLUMESまたはUSER rootフィールドは使用しないでください。 そうしないと、アプリケーションの実行中にファイルが失われる可能性があります。
環境変数キー | 説明 |
POD_IP | ポッドのIPアドレス。 |
EDAS_APP_ID | SAEにデプロイされたアプリケーションのID。 |
EDAS_ECC_ID | アプリケーションにデプロイされた後にクラスターにインポートされるECSインスタンスのID。 |
EDAS_PROJECT_NAME | EDAS_ECC_IDと同様に、このパラメーターはトレース解析に使用されます。 |
EDAS_JM_CONTAINER_ID | EDAS_ECC_IDと同様に、このパラメーターはトレース解析に使用されます。 |
EDAS_CATALINA_OPTS | ミドルウェアランタイム中に必要なCATALINA_OPTSパラメーター。 |
CATALINA_OPTS | EDAS_CATALINA_OPTSと同様に、このパラメーターはTomcatのデフォルトの起動パラメーターとして使用されます。 |
CATALINA_HOME | Tomcatがインストールされているパス。 |
PANDORA_LOCATION | HSFアプリケーションで表示できるPandoraパス。 |
Spring CloudまたはDubboアプリケーションのDockerfileの例 (JARパッケージに基づく)
centosからの
FROM centos:7
LABEL maintainer="SAE R&D team"
# Install the required software for compression.
RUN yum -y install wget unzip telnet
# Prepare the JDK and Tomcat system variables.
ENV JAVA_HOME /usr/java/latest
ENV PATH $PATH:$JAVA_HOME/bin
ENV ADMIN_HOME /home/admin
# Download and install OpenJDK.
RUN yum -y install java-1.8.0-openjdk-devel
# Download the JAR package for SAE deployment.
RUN mkdir -p /home/admin/app/ && \
wget http://sae-demo-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com/demo/1.0/hello-edas-0.0.1-SNAPSHOT.jar -O /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar
# Add support for the Chinese language in containers.
ENV LANG="en_US.UTF-8"
# Enhance the web shell use experience.
ENV TERM=xterm
# Include the startup command in the startup script start.sh.
RUN mkdir -p /home/admin
RUN echo 'eval execjava -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
WORKDIR $ADMIN_HOME
CMD ["/bin/bash", "/home/admin/start.sh"]
マイクロサービス機能を使用する必要がある場合は、起動コマンドを設定するときに
$CATALINA_OPTS
起動パラメーターを追加する必要があります。 詳細については、「スタートアップコマンドの設定」をご参照ください。自己管理レジストリまたはMSEレジストリを使用する必要がある場合は、起動パラメーター
-Dnacos.use.endpoint.parsing.ru le=false
および-Dnacos.use.cloud.nameスペース. parsing=false
を設定する必要があります。 SAE以外の組み込みレジストリを使用するには、必要な起動パラメーターを追加する必要があります。-瓶
.詳細については、「」をご参照ください。自己管理Nacosサービスレジストリの使用とMSE Nacosレジストリの使用.
Spring CloudまたはDubboアプリケーションのDockerfile例 (WARパッケージに基づく)
centosからの
FROM centos:7
LABEL maintainer="SAE R&D team"
# Install the required software for compression.
RUN yum -y install wget unzip telnet
# Prepare the JDK and Tomcat system variables.
ENV JAVA_HOME /usr/java/latest
ENV CATALINA_HOME /home/admin/apache-tomcat-7.0.91
ENV ADMIN_HOME /home/admin
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
RUN mkdir -p /home/admin
# Download and install OpenJDK.
RUN yum -y install java-1.8.0-openjdk-devel
# Download and install Tomcat.
RUN wget http://edas-hz.oss-cn-hangzhou.aliyuncs.com/apache-tomcat-7.0.91.tar.gz -O /tmp/apache-tomcat-7.0.91.tar.gz && \
tar -xvf /tmp/apache-tomcat-7.0.91.tar.gz -C /home/admin && \
rm /tmp/apache-tomcat-7.0.91.tar.gz && \
chmod +x ${CATALINA_HOME}/bin/*sh
RUN mkdir -p ${CATALINA_HOME}/deploy/
# Add support for the Chinese language in containers.
ENV LANG="en_US.UTF-8"
# Enhance the web shell use experience.
ENV TERM=xterm
# Download the JAR package for SAE deployment.
RUN wget http://sae-demo-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com/demo/1.0/hello-edas.war -O /tmp/ROOT.war && \
rm -rf ${CATALINA_HOME}/webapps/ROOT &&\
unzip /tmp/ROOT.war -d ${CATALINA_HOME}/deploy/ROOT/ && \
rm -rf /tmp/ROOT.war
# Set the Tomcat installation directory as the container startup directory. Start Tomcat in the run mode, and the catalina log is displayed in the standard command line.
WORKDIR $ADMIN_HOME
CMD ["catalina.sh", "run"]
HSFアプリケーションのDockerfile例 (JARパッケージに基づく)
centosからの
FROM centos:7
LABEL maintainer="SAE R&D team"
# Install the required software for compression.
RUN yum install -y wget unzip telnet lsof net-tools bind-utils
# Prepare the JDK, Tomcat system variables, and Tomcat path.
ENV JAVA_HOME /usr/java/latest
ENV CATALINA_HOME /home/admin/taobao-tomcat
ENV PATH ${JAVA_HOME}/bin:${PATH}
ENV ADMIN_HOME /home/admin
# Set the versions of EDAS-Container and Pandora.
ENV EDAS_CONTAINER_VERSION V3.5.4
LABEL pandora V3.5.4
# Download and install OpenJDK.
RUN yum -y install java-1.8.0-openjdk-devel
# Create a JAVA_HOME symbolic link.
RUN if [ ! -L "${JAVA_HOME}" ]; then mkdir -p `dirname ${JAVA_HOME}` && ln -s `readlink -f /usr/lib/jvm/java` ${JAVA_HOME}; fi
# Download and install EDAS-Container and Pandora based on environment variables.
RUN mkdir -p ${CATALINA_HOME}/deploy
RUN wget http://edas-hz.oss-cn-hangzhou.aliyuncs.com/edas-plugins/edas.sar.${EDAS_CONTAINER_VERSION}/taobao-hsf.tgz -O /tmp/taobao-hsf.tgz && \
tar -xvf /tmp/taobao-hsf.tgz -C ${CATALINA_HOME}/deploy/ && \
rm -rf /tmp/taobao-hsf.tgz
# Download the JAR package for SAE deployment.
RUN mkdir -p ${ADMIN_HOME}/app && wget http://edas.oss-cn-hangzhou.aliyuncs.com/demoapp/fatjar-test-case-provider-0.0.1-SNAPSHOT.jar -O ${ADMIN_HOME}/app/provider.jar
# Include the startup command in the startup script start.sh.
RUN echo 'eval execjava -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
WORKDIR $CATALINA_HOME
CMD ["/bin/bash", "/home/admin/start.sh"]
マイクロサービス機能を使用する必要がある場合は、起動コマンドを設定するときに
$CATALINA_OPTS
起動パラメーターを追加する必要があります。 詳細については、「スタートアップコマンドの設定」をご参照ください。自己管理レジストリまたはMSEレジストリを使用する必要がある場合は、起動パラメーター
-Dnacos.use.endpoint.parsing.ru le=false
および-Dnacos.use.cloud.nameスペース. parsing=false
を設定する必要があります。 SAE以外の組み込みレジストリを使用するには、必要な起動パラメーターを追加する必要があります。-瓶
.詳細については、「」をご参照ください。自己管理Nacosサービスレジストリの使用とMSE Nacosレジストリの使用.
HSFアプリケーションのDockerfile例 (WARパッケージに基づく)
centosからの
FROM centos:7
LABEL maintainer="SAE R&D team"
# Install the required software for compression.
RUN yum install -y wget unzip telnet lsof net-tools bind-utils
# Prepare the JDK, Tomcat system variables, and Tomcat path.
ENV JAVA_HOME /usr/java/latest
ENV CATALINA_HOME /home/admin/taobao-tomcat
ENV PATH ${JAVA_HOME}/bin:${CATALINA_HOME}/bin:${PATH}
# Set the versions of EDAS-Container and Pandora.
ENV EDAS_CONTAINER_VERSION V3.5.4
LABEL pandora V3.5.4
# Download and install OpenJDK.
RUN yum -y install java-1.8.0-openjdk-devel
# Create a JAVA_HOME symbolic link.
RUN if [ ! -L "${JAVA_HOME}" ]; then mkdir -p `dirname ${JAVA_HOME}` && ln -s `readlink -f /usr/lib/jvm/java` ${JAVA_HOME}; fi
# Download and install Ali-Tomcat 7.0.92 to the directory: /home/admin/taobao-tomcat.
RUN wget http://edas-hz.oss-cn-hangzhou.aliyuncs.com/edas-container/7.0.92/taobao-tomcat-production-7.0.92.tar.gz -O /tmp/taobao-tomcat.tar.gz && \
mkdir -p ${CATALINA_HOME} && \
tar -xvf /tmp/taobao-tomcat.tar.gz -C ${CATALINA_HOME} && \
mv ${CATALINA_HOME}/taobao-tomcat-production-7.0.59.3/* ${CATALINA_HOME}/ && \
rm -rf /tmp/taobao-tomcat.tar.gz ${CATALINA_HOME}/taobao-tomcat-production-7.0.59.3 && \
chmod +x ${CATALINA_HOME}/bin/*sh
# Download and install EDAS-Container and Pandora based on environment variables.
RUN wget http://edas-hz.oss-cn-hangzhou.aliyuncs.com/edas-plugins/edas.sar.${EDAS_CONTAINER_VERSION}/taobao-hsf.tgz -O /tmp/taobao-hsf.tgz && \
tar -xvf /tmp/taobao-hsf.tgz -C ${CATALINA_HOME}/deploy && \
rm -rf /tmp/taobao-hsf.tgz
# Download the WAR package for SAE deployment.
RUN wget http://edas.oss-cn-hangzhou.aliyuncs.com/demo/hello-edas.war -O /tmp/ROOT.war && \
unzip /tmp/ROOT.war -d ${CATALINA_HOME}/deploy/ROOT && \
rm -rf /tmp/ROOT.war
# Set the Tomcat installation directory as the container startup directory. Start Tomcat in the run mode, and the catalina log is displayed in the standard command line.
WORKDIR ${CATALINA_HOME}
CMD ["catalina.sh", "run"]
Dockerfileのカスタマイズ
JDKバージョン、Tomcat設定、ランタイム環境など、Dockerfileのランタイム環境設定を変更します。
JDKのバージョンを変更します。
次の例では、標準のDockerfileでJDKバージョンを変更する方法を説明します。
# Download and install JDK 8. RUN wget http://edas-hz.oss-cn-hangzhou.aliyuncs.com/agent/prod/files/jdk-8u65-linux-x64.rpm -O /tmp/jdk-8u65-linux-x64.rpm && \ yum -y install /tmp/jdk-8u65-linux-x64.rpm && \ rm -rf /tmp/jdk-8u65-linux-x64.rpm
Tomcat起動パラメーターにSAEランタイム環境を追加します。
SAEは、ランタイム中に必要な最小パラメータを含むJVM環境変数EDAS_CATALINA_OPTSを提供します。 Ali-Tomcatは、XmxやXmsなどのパラメーターを設定するためのカスタマイズされたJVMコンフィギュレーションオプションJAVA_OPTSを提供します。
# Configure JVM parameters. JVM parameters for the SAE application. ENV CATALINA_OPTS ${EDAS_CATALINA_OPTS} # Configure JVM parameters. ENV JAVA_OPTS="\ -Xmx3550m \ -Xms3550m \ -Xmn2g"
自己管理レジストリを使用します。
マイクロサービスで自己管理レジストリを使用する場合は、Javaコマンドに次のパラメーターを追加します。
-Dnacos.use.endpoint.parsing.ru le=false
-Dnacos.use.cloud.name space.parsing=false
サンプルコード:
RUN echo 'eval exec java -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
イメージを作成する
ローカルのコマンドラインツールを使用して、Dockerfileがあるディレクトリに移動します。 次のdocker build
コマンドを実行して、イメージをビルドします。
docker build -t <Tag name (application name recommended)>:<Version> .
or
docker build -t <Tag name (application name recommended>:<Version> -f /path/to/custom_dockerfile_name.# Run the command if the created Dockerfile resides in another directory or is not named Dockerfile.
例:
docker build -t hsf-provider:1.0.0。
docker images | grep <Image tag name>
コマンドを実行して、ローカルのコンパイル済みイメージを表示します。
イメージリポジトリにイメージをアップロードする
Javaアプリケーション用にローカルで作成されたイメージを、Alibaba Cloudが提供するContainer Registryにアップロードできます。 詳細については、「イメージの管理」をご参照ください。
ローカルイメージをイメージリポジトリにアップロードするには、Container Registryにイメージをプッシュするためのコマンドを実行します。 これらのコマンドは、指定したイメージリポジトリの [詳細] ページで表示できます。
docker login --username=<Current username> registry.<regionId>.aliyuncs.com # Enter the fixed or temporary password that is used as the access credential for the default instance in Container Registry rather than the password to your Alibaba Cloud account.
docker tag <Local image ID> registry.<regionId>.aliyuncs.com/<Namespace name>/<Image repositry name>:<Image version>
docker push registry.<regionId>.aliyuncs.com/<Namespace name>/<Image repositry name>:<Image version>
例:
docker login --username=****@188077086902**** registry.cn-hangzhou.aliyuncs.com
docker tag <ImageId> registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/webapps/hsf-provider:1.0.0
関連ドキュメント
イメージを作成したら、SAEでイメージをデプロイできます。 詳細については、以下のトピックをご参照ください。