首页 > 解决方案 > vscode - 如何在任务中运行`docker`?-- Docker-Build-Task 不起作用

问题描述

情况和问题

我正在运行macOS Mojave 10.14.5升级 bash如此处所述并有一个TeXlive docker 容器(基本上就是那个),我想调用它来排版 LaTeX 文件。tasks.json这确实工作得很好,并且在最近的一些更新(我无法确定,因为我不是每天都使用这个)之前,执行以下操作也可以完美地工作。

tasks.json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "runit",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command": "docker",
            "args": [
                "run",
                "-v",
                "${fileDirname}:/doc/",
                "-t",
                "-i",
                "mytexlive",
                "pdflatex",
                "${fileBasename}"
            ],
            "problemMatcher": []
        },
        {
            "type": "shell",
            "label": "test",
            "command": "echo",
            "args": [
                "run",
                "-v",
                "${fileDirname}:/doc/",
                "-t",
                "-i",
                "mytexlive",
                "pdflatex",
                "${fileBasename}"
            ],
        }
    ]
}

尝试运行 docker 会产生“找不到命令”:

> Executing task: docker run -v /path/to/file:/doc/ -t -i mytexlive pdflatex file_name.tex <

/usr/local/bin/bash: docker: command not found
The terminal process command '/usr/local/bin/bash -c 'docker run -v /path/to/file:/doc/ -t -i mytexlive pdflatex file_name.tex'' failed to launch (exit code: 127)

...在尝试回声时,效果很好。

> Executing task: echo run -v /path/to/file:/doc/ -t -i mytexlive pdflatex file_name.tex <

run -v /path/to/file:/doc/ -t -i mytexlive pdflatex file_name.tex

即使它曾经像上面描述的那样工作并且相同的命令在终端中工作,但如果我将它作为构建任务执行它现在会失败。因此,我的

问题

如何docker在构建任务中使用?

或解决上述设置中的问题。

补充说明

尝试以下产生相同的“找不到命令”

{
    "type": "shell", "label": "test",
    "command": "which", "args": ["docker"]
}

...即使这有效:

bash$ /usr/local/bin/bash -c 'which docker'
/usr/local/bin/docker
bash$ echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

编辑:再注:

我正在使用上下文条目来启动 vscode,该脚本使用运行以下 bash 命令并将元素“右键单击”作为变量传递的 automator 脚本:

#!/bin/sh
/usr/local/bin/code -n "$1"

标签: dockervisual-studio-codevscode-tasks

解决方案


因此,由于这里没有任何进展,并且我在 GitHub 上获得了帮助:我只会回答自己,这样在此处寻找解决方案的其他人就不会失望。

请在此处joaomoreno 致谢


事实证明,通过上下文条目启动 vscode,环境变量存在一些问题。到目前为止,像这样开始解决了这个问题:

#!/bin/sh
VSCODE_FORCE_USER_ENV=1 /usr/local/bin/code -n "$1"

推荐阅读