docker 云生成未阅读用户定义的生成参数

jjjwad0x  于 2022-12-22  发布在  Docker
关注(0)|答案(2)|浏览(101)

我希望从cloudbuild.yaml传递ENV参数,以便在云构建中的Docker运行期间插入值。
我在云构建UI触发器选项中定义了_MYFLAG_SECOND_FLAG
cloudbuild.yaml

steps:
  - name: gcr.io/cloud-builders/docker
    args:
      [
        build,
        -t,
        us-central1-docker.pkg.dev/XXX/test-flags/test-flags,
        ".",
      ]
  - name: gcr.io/cloud-builders/docker
    entrypoint: docker
    args:
      [
        run,
        -e MYFLAG=$_MYFLAG,
        -e SECOND_FLAG=$_SECOND_FLAG,
        us-central1-docker.pkg.dev/XXX/test-flags/test-flags,
      ]
images:
  [us-central1-docker.pkg.dev/XXX/test-flags/test-flags]
options:
  logging: CLOUD_LOGGING_ONLY
substitutions:
  _MYFLAG: "default build yaml arg"
  _SECOND_FLAG: ""

停靠文件

FROM python:latest
COPY . .
RUN pip install -r requirements.txt  
CMD python main.py --myflag ${MYFLAG} \
    --second_flag ${SECOND_FLAG}

Python文件

from absl import app
from absl import flags
from absl import logging

FLAGS = flags.FLAGS
flags.DEFINE_string("myflag", "Default value", "Flag description.")
flags.DEFINE_string("second_flag", "Default value second", "Flag description.")

def main(_):
    logging.info("STARTING FLAG SCRIPT")
    logging.info("myflag: %s", FLAGS.myflag)
    logging.info("second_flag: %s", FLAGS.second_flag)

if __name__ == "__main__":
    app.run(main)

从输出来看,第一个标志似乎将第二个标志解释为arg,第二个标志使用cloudbuild.yaml文件中的默认arg,这意味着云构建UI中的定义没有得到正确解释。

我试过

来自Docker:

  • https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file
  • https://docs.docker.com/engine/reference/run/#env-environment-variables
  • 在云构建中。
  • -e MYFLAG=$_MYFLAG,
  • --env MYFLAG=$_MYFLAG,
  • "--env 'MYFLAG=$_MYFLAG',"

这两种方法产生相同的结果。

irlmq6kh

irlmq6kh1#

你能用双引号试试你的舞步吗?

- name: gcr.io/cloud-builders/docker
    entrypoint: docker
    args:
      [
        "run",
        "-e MYFLAG=$_MYFLAG",
        "-e SECOND_FLAG=$_SECOND_FLAG",
        "us-central1-docker.pkg.dev/XXX/test-flags/test-flags",
      ]
niwlg2el

niwlg2el2#

只是猜测,但也可能是缺少花括号{}
${_我的标志}
因为文件里是这样的

相关问题