首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于暂存和生产的单独Dockerrun.aws.json文件

用于暂存和生产的单独Dockerrun.aws.json文件
EN

Stack Overflow用户
提问于 2018-05-04 03:10:50
回答 2查看 899关注 0票数 12

处理Dockerrun.aws.json文件部署到暂存和生产环境的最佳方法是什么?有没有办法将变量传递给映像值等,或者有多个Dockerrun.aws.json文件,每个环境一个?目前,我的staging env获取标记为staging的映像,production获取标记为production的映像,但我需要为每个env使用不同的Dockerrun.aws.json?我要么想要这样做:

代码语言:javascript
复制
"image": "${IMAGE}",

其中映像是在配置中为每个环境定义的,或者将每个文件分开。因此,我可以根据暂存或生产来设置不同的容器。

EN

回答 2

Stack Overflow用户

发布于 2020-01-13 06:23:56

老问题,但如果它可以帮助其他人,我想做几乎相同的事情,并自动化它,所以作为一个快速的方法,我提出了一个简单的shell脚本。

我们的想法是创建一个包含动态ENV属性的Dockerrun.aws.json模板文件,然后根据所需的环境,脚本将使用该模板并生成适当的Dockerrun.aws.json文件。

示例:

创建包含以下内容的shell脚本:

代码语言:javascript
复制
#!/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

然后创建您的Dockerrun.aws.json.template文件:

代码语言:javascript
复制
{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "php-app",
      "image": "phpfpm-image-${ENV}",
      #...
    },
    {
      "name": "nginx-proxy",
      "image": "nginx-image-${ENV}",
      #...
    }
  ]
}

现在,只需将shell脚本放在Dockerrun.aws.jon.template文件所在的位置,并像这样运行它:

代码语言:javascript
复制
sh yourscript.sh dev

它将生成一个有效的文件,供您在给定环境中使用。

这是一个简单的例子,它让你对做什么有一个基本的想法,然后你可以用它来构建更复杂的东西。我个人使用它来挑选所有正确的配置文件(.ebextensions等)然后把整件事压缩上传到豆茎上。

票数 5
EN

Stack Overflow用户

发布于 2019-03-18 17:54:35

一种方法是创建一个Makefile,并在不同的环境中使用不同的命令进行部署,例如"make deploy-staging“或"make deploy-prod”。在内部,该命令将通过将特定于环境的值插入到模板Dockerrun.aws文件中来动态生成Dockerrun.aws.json。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50162321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档