本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
通过SAE控制台使用容器镜像或代码包方式部署应用时,SAE会根据预设的启动参数来启动容器。如果需要在容器启动执行特殊配置(例如Nginx)或不采用预设的启动参数,您可以通过SAE自定义容器的启动命令,以实现特殊配置或覆盖镜像的启动默认参数。
背景信息
在制作镜像时,容器的启动配置已经配置在Dockerfile文件中的ENTRYPOINT或CMD。容器启动时,Dockerfile文件中的内容会被优先执行。
例如,Dockerfile中设置的以下命令,在容器启动时将被第一个时执行。
FROM ubuntu
ENTRYPOINT [nginx, '-g', 'daemon off;']
功能入口
场景不同,操作入口也有所差异:
创建应用
登录SAE控制台,在左侧导航栏选择 ,然后选择目标地域和目标命名空间,最后单击创建应用。
在应用基本信息向导页面进行配置后,单击下一步:高级设置。
对正在运行的应用进行变更
重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。
登录SAE控制台,在左侧导航栏选择 ,然后选择目标地域和目标命名空间,最后单击目标应用名称。
在目标应用的基础信息页面,单击部署应用。
对已停止的应用进行变更
登录SAE控制台,在左侧导航栏选择 ,然后选择目标地域和目标命名空间,最后单击目标应用名称。
在目标应用的基础信息页面,单击修改应用配置。
设置应用的启动命令
通过镜像部署的应用
本文以给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'
通过JAR包部署的应用
Java应用启动和运行时需要定义启动命令和参数,如Java的JVM参数、GC策略等。
SAE将上传的JAR包自动编译为镜像,且以容器方式运行应用。在编译过程中,SAE会内置启动命令和参数,并指定JAR包的存放路径。您可以登录SAE控制台修改JAR包默认的启动命令及命令参数。
如果您对原有Dockerfile镜像的ENTRYPOINT和CMD配置内容不熟悉,请勿自定义或者修改启动命令和启动参数,错误的启动命令将导致应用创建失败。
在启动命令设置区域输入相关配置项。启动命令示例如下。
配置项 | 说明 |
系统默认启动命令 | SAE默认的启动命令。 |
options设置 | 配置JVM参数。关于参数详情,请参见JVM参数配置说明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。
参数说明如下。
重要 以WAR包、JAR包方式部署应用的启动命令不同,请勿共用启动命令。本示例中的远程调试命令,适用于以上两种部署方式。 |
args设置 | 配置标准输出和错误输出的重定向命令,例如 |
通过WAR包部署的应用
在启动命令设置区域输入相关配置项。启动命令示例如下。
配置项 | 说明 |
系统默认启动命令 | SAE默认的启动命令。 |
options设置 | 配置JVM参数。关于参数详情,请参见JVM参数配置说明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。
参数说明如下。
重要 以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'