Elastic Beanstalk和Dockerfile ARG指令

Sus*_*hil 8 docker amazon-elastic-beanstalk

我需要将一些参数传递给我的docker build命令.我知道这可以使用内部的ARG指令完成Dockerfile.现在假设我有以下内容Dockerfile.

ARG myvar
Run Code Online (Sandbox Code Playgroud)

并使用该命令docker build --build-arg mvar=myOwnVar ...,这将工作.

但是,我正在使用AWS Elastic Beanstalk它Docker来构建映像并将其部署在容器中.所以问题是,

  1. 这有可能吗?
  2. 如果,是的,我如何确保AWS EB将值传递给这些参数?

谢谢Sushil

rkm*_*max 6

昨天我开始使用AWS EB,我很高兴,今天我需要将一些ARG传递给我的构建,在文档上找到它

在此输入图像描述

很伤心

来源:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html

解决方法

一个可能的解决方案是我目前正在做的,在运行docker build之前将一些文件添加到EB并从Dockerfile中使用它

例如,假设我需要TOKEN在我的docker上使用var名称

RUN curl http://somemething.com?token=$TOKEN
Run Code Online (Sandbox Code Playgroud)

所以我做的很棒

添加一个新的脚本文件

ADD ./curl-thing.sh /curl-thing.sh
Run Code Online (Sandbox Code Playgroud)

和的内容

if [ -f "./.env"]; then
  source ./.env
fi
Run Code Online (Sandbox Code Playgroud)

现在添加一个文件名.ebextensions/my-env.config,这个名称对于forlder .ebextensions来说并不重要,并且扩展名为.config

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/02_mix_environment.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      EB_APP_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
      TOKEN=$(/opt/elasticbeanstalk/bin/get-config environment -k TOKEN)
      echo "export TOKEN=${TOKEN}" >> ${EB_APP_DEPLOY_DIR}/.env
Run Code Online (Sandbox Code Playgroud)