mcd*_*mcd 6 amazon-web-services amazon-elastic-beanstalk dockerrun.aws.json
处理Dockerrun.aws.json文件到阶段和生产的部署的最佳方法是什么?有没有一种方法可以将变量传递给图像值等,或者针对每个环境有多个Dockerrun.aws.json文件?目前,我的暂存环境将图像标记为生产阶段,生产环境将图像标记为生产环境,但是我需要每个环境都不同的Dockerrun.aws.json吗?我要么想做类似的事情:
"image": "${IMAGE}",
Run Code Online (Sandbox Code Playgroud)
其中在每个环境的配置中定义了IMAGE或将每个文件分开。因此,我可以根据阶段或生产情况来不同地设置每个容器。
老问题,但如果它可以帮助其他人,我想做几乎相同的事情并将其自动化,因此作为一种快速的方法,我想出了一个简单的 shell 脚本。
我们的想法是拥有一个 Dockerrun.aws.json 模板文件,该文件将包含一个动态 ENV 属性,然后根据所需的环境,脚本将使用此模板并生成适当的 Dockerrun.aws.json 文件。
创建一个包含以下内容的 shell 脚本:
#!/bin/bash
# current script directory path
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# $1 will be the environement name passed to the script : it can only be dev or prod
# if empty, we ask for user input for convenience
if [ "$1" == "" ]; then
echo -n "Enter your the environment (either 'dev' or 'prod') and press [ENTER]:"
read ENV
else
ENV=$1
fi
# check if environment name is valid
if [ "$ENV" == "dev" ] || [ "$ENV" == "prod" ] ; then
# move to shell script directory
cd $DIR
# generate Dockerfile from template by replacing the ENV property by the input
echo "Generating Dockerrun.aws.json..."
sed -e "s/\${ENV}/$ENV/g" Dockerrun.aws.json.template > Dockerrun.aws.json
# do other things here if necessary
else
echo "$ENV is not a valid environment name, accepted values : env & prod"
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
然后创建您的 Dockerrun.aws.json.template 文件:
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "php-app",
"image": "phpfpm-image-${ENV}",
#...
},
{
"name": "nginx-proxy",
"image": "nginx-image-${ENV}",
#...
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在,只需将 shell 脚本放在 Dockerrun.aws.jon.template 文件所在的位置,然后像这样运行它:
sh yourscript.sh dev
Run Code Online (Sandbox Code Playgroud)
它将生成一个有效文件供您用于给定环境。
这是一个简单的示例,它为您提供了做什么的基本概念,然后您可以从中构建更复杂的东西。我个人使用它来选择所有正确的配置文件(.ebextensions 等),然后将整个文件压缩以上传到 beanstalk。
小智 0
一种方法是拥有一个 Makefile 并具有用于在不同环境中部署的单独命令,例如“make deploy-staging”或“make deploy-prod”。在内部,该命令将通过将 env 特定值插入模板 Dockerrun.aws 文件来动态生成 Dockerrun.aws.json。
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |