语法
选项
参数
前置条件
必须先创建开发环境:lager exec 所使用的 Docker 镜像、挂载目录和 shell。
命令参考
运行内联命令
保存命令以便复用
运行已保存的命令
追加额外参数
--。否则,如果某个参数与
lager exec 自己的选项同名(例如 --verbose),它会被 lager exec 自己吃掉。
传递环境变量
--passenv 把您 shell 中的值复制到容器里。请不要传 PATH:宿主机的值会替换镜像的 PATH,容器随后就找不到自己的工具了。
在 CI 中运行
lager exec 在启动容器之前会先读取 CI 环境变量。在下列 CI 系统的作业中,它会就地运行命令,不启动容器:
CLI 认为这样的作业已经运行在 devenv 镜像中。识别只读取这些变量,不检查是否处于容器内。没有
container: 块的 GitHub Actions 或 GitLab CI 作业同样会就地运行命令,也就是直接运行在运行器上。
就地运行时,命令的行为如下:
- shell 取自
.lager中 DEVENV 的shell,否则为/bin/bash。 - 命令在当前目录运行,
mount_dir不生效。 - 命令获得作业的环境变量,外加
.lager中的environment和每个--env。--passenv不起作用,因为作业环境本来就已存在。 - 命令的退出码就是
lager exec的退出码。 --mount、--volume、--user和--group不起作用。如果您传入其中任何一个, CLI 会打印一行警告,例如Warning: --mount, --volume ignored: the command runs in the current container, so there is nothing to start.--interactive和--tty不起作用。
LAGER_CI_OVERRIDE
设为任意非空值。0 也算非空。
与其他命令的区别
已保存命令的管理
已保存的命令存放在您.lager 配置的 devenv 段中。请用 lager devenv 管理它们:
示例
说明
- 容器以
--rm创建,因此每条命令执行完后都会被移除 - 容器中的退出码会传递给 CLI
- 您 shell 中每一个
LAGER*环境变量都会被传入容器 - 源代码从您的本地文件系统挂载到容器中
- 存在
~/.lager时,Lager 配置也会挂载到容器中 COMMAND参数和--command选项互斥,只能用其中一个

