【发布时间】:2016-09-01 06:01:23
【问题描述】:
我有一个 Dockerfile,它通过使用用户访问令牌从 github 拉取私有 repo:
ARG DEPLOYMENT_TOKEN
RUN git clone https://$DEPLOYMENT_TOKEN:x-oauth-basic@github.com/company-org/api.git /tmpapp/
现在,当我在弹性 beantalk 中创建新应用程序和环境时,如何在弹性 beantalk 首次尝试构建 docker 映像和部署时为它提供该访问令牌?
这可以传递给 eb cli 命令 eb create 吗?
eb create --envvars DEPLOYMENT_TOKEN=$DEPLOYMENT_TOKEN
那么当应用程序尝试创建环境和部署时,它会包含环境变量,以便在构建 docker 映像时能够从私有 repo 中拉取?
我知道 eb setenv 允许您在成功部署后设置环境变量,但我想为 docker 构建过程执行此操作。
我不想通过使用容器描述中的环境键将访问令牌放入 Dockerrun 文件中。
{
"containerDefinitions": [
{
"name": "myContainer",
"image": "something",
"environment": [
{
"name": "MY_DB_PASSWORD",
"value": "password"
}
],
因为这意味着任何人都可以使用信息,而且我什至不确定这是否可行。
我也考虑过 .ebextensions,现在正在研究。
【问题讨论】:
-
是的,它应该可以工作,但你为什么不试试看会发生什么
-
@dkarchmer 我做了,但我发现的最大问题是,如果我要提供构建时间参数,然后在 Dockerfile 中引用,我需要能够提供这些构建时间参数。 Dockerrunfile,实际上并没有任何文档,而且据我所见,没有任何选项可以包含构建参数
-
您可能希望避免以这种方式构建。相反,只需将所有代码与 dockerfile 放在同一个位置,然后让 EB deploy 发布所有内容。这样,您的 dockerfile 只需要 ADD 或 COPY 即可将文件移动到映像中
-
当硬编码到 Dockerfile 本身时,构建参数可能过于敏感
标签: amazon-web-services docker amazon-elastic-beanstalk