通过SAE控制台使用容器镜像或代码包方式部署应用时,SAE会根据预设的启动参数来启动容器。如果需要在容器启动执行特殊配置(例如Nginx)或不采用预设的启动参数,您可以通过SAE自定义容器的启动命令,以实现特殊配置或覆盖镜像的启动默认参数。
背景信息
在制作镜像时,容器的启动配置已经配置在Dockerfile文件中的ENTRYPOINT或CMD。容器启动时,Dockerfile文件中的内容会被优先执行。
例如,Dockerfile中设置的以下命令,在容器启动时将被第一个执行。
FROM ubuntu
ENTRYPOINT [nginx, '-g', 'daemon off;']
使用说明
启动命令既可以在创建应用过程中,也可以在部署应用过程中配置。配置路径如下。
创建应用:在创建应用页面的高级设置向导页面配置。
部署应用:
当实例数大于等于1时,在目标应用的基本信息页面,单击部署应用,在部署应用页面配置。
当实例数等于0时,在目标应用的基本信息页面,单击修改应用配置,在修改应用配置页面配置。
说明应用配置修改后,在下一次应用实例数大于0时,部署应用才会生效。
不同部署方式及应用环境操作步骤类似,但可配置的启动命令不同,您可以根据实际界面配置。
设置镜像部署应用的启动命令
以创建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配置内容不熟悉,请勿自定义或者修改启动命令和启动参数,错误的启动命令将导致应用创建失败。
以创建Java应用为例,在应用部署配置配置向导页面选择应用部署方式为JAR包部署,展开启动命令设置区域并输入相关配置项。启动命令示例如下。
配置项 | 说明 |
系统默认启动命令 | SAE默认的启动命令。 |
options设置 | 配置JVM参数。关于参数详情,请参见JVM参数配置说明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。
参数说明如下。
重要 以WAR包、JAR包方式部署应用的启动命令不同,请勿共用启动命令。本示例中的远程调试命令,适用于以上两种部署方式。 |
args设置 | 配置标准输出和错误输出的重定向命令,例如 |
设置WAR包部署应用的启动命令
以创建Java应用为例,在应用部署配置配置向导页面选择应用部署方式为WAR包部署,展开启动命令设置区域并输入相关配置项。启动命令示例如下。
配置项 | 说明 |
系统默认启动命令 | SAE默认的启动命令。 |
options设置 | 配置JVM参数。关于参数详情,请参见JVM参数配置说明、Tuning Java Virtual Machines和JVM Tuning: How to Prepare Your Environment for Performance Tuning。 如果您需要使用应用的远程调试功能,请根据JDK版本配置所需命令。
参数说明如下。
重要 以WAR包、JAR包方式部署应用的启动命令不同,请勿共用启动命令。本示例中的远程调试命令,适用于以上两种部署方式。 |
设置ZIP包部署应用的启动命令
以创建Python应用为例,在应用部署配置配置向导页面选择应用部署方式为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'