【问题标题】:Lando: exec error with environment variablesLando:环境变量的执行错误
【发布时间】:2020-02-06 17:46:42
【问题描述】:

我正在使用Lando(Windows 10 Enterprise 上的 v3.0.0-rc.21)并尝试在我的.lando.yml 中设置容器创建环境变量:

services:
  appserver:
    type: ruby # the same for php, but didn't tested other types
  run:
    - export SOMENAME=somevalue

tooling:
  test:
    cmd: export SOMENAME=somevalue
    service: appserver

Lando 启动时似乎无法识别该命令,因为它抛出: OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"export\": executable file not found in $PATH": unknown

同样的错误发生在lando ssh -c "export SOMENAME=somevalue" 或将其作为命令添加到.lando.yml 的工具部分(见上文),然后运行lando test

但是,在lando 启动后从lando ssh 运行相同的命令可以正常工作:

lando ssh
www-data@81bd623b9c3a:/app$ export SOMENAME=somevalue
www-data@81bd623b9c3a:/app$ printenv SOMENAME
somevalue
www-data@81bd623b9c3a:/app$

这是一个 Lando 错误吗?或者某些(哪个?)shell 命令应该以某种不同的方式调用?

【问题讨论】:

    标签: bash docker environment-variables lando


    【解决方案1】:

    你可以在lando yaml中使用这个env_file

    env_file:
      - defaults.env
    

    defaults.env:

    SOMENAME=somevalue
    

    this

    【讨论】:

    • 谢谢!这并不能解决问题,但确实可能是一种解决方法。
    • 在lando.yml 中设置覆盖也可以作为一种解决方法:docs.lando.dev/config/services.html#overrides
    • 您将找不到使用export SOMENAME=somevalue 的解决方案,因为它仅在当前会话中有效,您需要使用上述两种方法之一来定义变量
    • 好吧,即使在当前会话中它也不起作用......但是动态设置环境变量在工具部分可能很有用,以运行具有不同环境设置的相同脚本。以WEBPACKER_DEV_SERVER_HOST=0.0.0.0 ./bin/webpack-dev-server 之类的命令为例。它看起来很奇怪,为什么它可以通过 SSH 工作,但不能来自 Lando 配置。
    【解决方案2】:

    只是为了从 cmets 中提取这个。最终得到了 Lando 覆盖 的解决方法,如下所示:

    services:
      appserver:
        type: ruby # or other type
        overrides:
          environment:
            SOMENAME: somevalue
    

    文档:https://docs.lando.dev/config/services.html#overrides

    另一个解决方法——正如@LinPy 在他的回答中所建议的——是使用外部env_file

    【讨论】:

      【解决方案3】:

      如果您想在 CLI 中使用该变量,您可以这样做:

      events:
        post-start:
          - appserver: "export PHP_IDE_CONFIG=\"serverName=appserver\""

      运行lando restart -y && lando ssh,然后通过printenv | grep PHP_IDE_CONFIG检查值

      【讨论】:

        猜你喜欢
        • 2018-04-15
        • 2016-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 2014-03-24
        • 2014-12-03
        • 2017-05-27
        • 1970-01-01
        相关资源
        最近更新 更多