Lando:环境变量执行错误
Lando: exec error with environment variables
我正在使用 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 命令应该以某种不同的方式调用?
你可以在 lando yaml 中使用这个 env_file
:
env_file:
- defaults.env
在defaults.env
中:
SOMENAME=somevalue
见this
只是从评论中提取这个。最终得到了 Lando 覆盖 的解决方法,如下所示:
services:
appserver:
type: ruby # or other type
overrides:
environment:
SOMENAME: somevalue
文档:https://docs.lando.dev/config/services.html#overrides
另一种解决方法——正如@LinPy 在他的回答中建议的那样——是使用外部 env_file
如果您想在 CLI 中使用变量,您可以这样做:
events:
post-start:
- appserver: "export PHP_IDE_CONFIG=\"serverName=appserver\""
运行 lando restart -y && lando ssh
然后通过 printenv | grep PHP_IDE_CONFIG
检查值
我正在使用 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 命令应该以某种不同的方式调用?
你可以在 lando yaml 中使用这个 env_file
:
env_file:
- defaults.env
在defaults.env
中:
SOMENAME=somevalue
见this
只是从评论中提取这个。最终得到了 Lando 覆盖 的解决方法,如下所示:
services:
appserver:
type: ruby # or other type
overrides:
environment:
SOMENAME: somevalue
文档:https://docs.lando.dev/config/services.html#overrides
另一种解决方法——正如@LinPy 在他的回答中建议的那样——是使用外部 env_file
如果您想在 CLI 中使用变量,您可以这样做:
events:
post-start:
- appserver: "export PHP_IDE_CONFIG=\"serverName=appserver\""
运行 lando restart -y && lando ssh
然后通过 printenv | grep PHP_IDE_CONFIG