设置启动命令

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

通过SAE控制台使用容器镜像或代码包方式部署应用时,SAE会根据预设的启动参数来启动容器。如果需要在容器启动执行特殊配置(例如Nginx)或不采用预设的启动参数,您可以通过SAE自定义容器的启动命令,以实现特殊配置或覆盖镜像的启动默认参数。

背景信息

在制作镜像时,容器的启动配置已经配置在Dockerfile文件中的ENTRYPOINTCMD。容器启动时,Dockerfile文件中的内容会被优先执行。

例如,Dockerfile中设置的以下命令,在容器启动时将被第一个时执行。

FROM ubuntu
ENTRYPOINT [nginx, '-g', 'daemon off;']                

功能入口

场景不同,操作入口也有所差异:

创建应用

  1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击创建应用

  2. 应用基本信息向导页面进行配置后,单击下一步:高级设置

对正在运行的应用进行变更

警告

重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。

  1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击目标应用名称。

  2. 在目标应用的基础信息页面,单击部署应用

对已停止的应用进行变更

  1. 登录SAE控制台,在左侧导航栏选择应用管理 > 应用列表,然后选择目标地域和目标命名空间,最后单击目标应用名称。

  2. 在目标应用的基础信息页面,单击修改应用配置

设置应用的启动命令

通过镜像部署的应用

本文以给Java应用设置启动命令为例进行说明。

启动命名区域,选择脚本类型,然后配置容器的启动命令。

  • >_ /bin/sh

    sh -c 'while true; do echo hello; sleep 10;done'
  • >_ /bin/bash

    bash -c 'while true; do echo hello; sleep 10;done'

sBXB3VO8G5

通过JAR包部署的应用

Java应用启动和运行时需要定义启动命令和参数,如JavaJVM参数、GC策略等。

SAE将上传的JAR包自动编译为镜像,且以容器方式运行应用。在编译过程中,SAE会内置启动命令和参数,并指定JAR包的存放路径。您可以登录SAE控制台修改JAR包默认的启动命令及命令参数。

重要

如果您对原有Dockerfile镜像的ENTRYPOINTCMD配置内容不熟悉,请勿自定义或者修改启动命令和启动参数,错误的启动命令将导致应用创建失败。

启动命令设置区域输入相关配置项。启动命令示例如下。

dQolzyE4Iu

配置项

说明

系统默认启动命令

SAE默认的启动命令。

options设置

配置JVM参数。关于参数详情,请参见JVM参数配置说明Tuning Java Virtual MachinesJVM Tuning: How to Prepare Your Environment for Performance Tuning

如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。

  • JDK 11JDK 17

    -agentlib:jdwp=transport=dt_socket,address=*:9000,server=y,suspend=n
  • 其他JDK版本

    -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n

参数说明如下。

  • transport:远程调试间的数据传输方式。

  • address:远程调试的地址。与开启远程调试时设置的调试端口保持一致。远程调试的详细说明,请参见远程调试

重要

WAR包、JAR包方式部署应用的启动命令不同,请勿共用启动命令。本示例中的远程调试命令,适用于以上两种部署方式。

args设置

配置标准输出和错误输出的重定向命令,例如1>>/tmp/std.log>&1

通过WAR包部署的应用

启动命令设置区域输入相关配置项。启动命令示例如下。

nGwm0XDLnO

配置项

说明

系统默认启动命令

SAE默认的启动命令。

options设置

配置JVM参数。关于参数详情,请参见JVM参数配置说明Tuning Java Virtual MachinesJVM Tuning: How to Prepare Your Environment for Performance Tuning

如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。

  • JDK 11JDK 17

    -agentlib:jdwp=transport=dt_socket,address=*:9000,server=y,suspend=n
  • 其他JDK版本

    -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n

参数说明如下。

  • transport:远程调试间的数据传输方式。

  • address:远程调试的地址。与开启远程调试时设置的调试端口保持一致。远程调试的详细说明,请参见远程调试

重要

WAR包、JAR包方式部署应用的启动命令不同,请勿共用启动命令。本示例中的远程调试命令,适用于以上两种部署方式。

通过ZIP包部署的应用

启动命令区域,选择脚本类型,然后配置容器的启动命令。

  • >_ /bin/sh

    sh -c 'gunicorn -w 3 -b 0.0.0.0:8080 app.hello:app'
  • >_ /bin/bash

    bash -c 'gunicorn -w 3 -b 0.0.0.0:8080 app.hello:app'

FWP1NqMoGb