已挂载的主机卷不可从 Azure Pipelines 中的主机写入
Mounted host volume is not writable from host in Azure Pipelines
我正在从主机到容器安装一个卷,在 运行 连接 docker 容器时不会出现该卷。
volumes:
- "../foo:/app/foo"
foo
文件夹将由 docker 创建。容器将在 foo
内创建额外的文件夹和文件。同样,主机内的另一个应用程序将在 foo
内创建其他文件夹和文件。我的期望是所有内容都应该放在容器应用程序和主机应用程序的 foo
文件夹中。
这在 Mac 中工作正常,但 运行在 Azure Pipelines 中使用相同的方法无法从主机创建其他文件和文件夹。
Error: EACCES: permission denied, mkdir './foo'
at Object.mkdirSync (fs.js:921:3)
我试过在卷安装的末尾添加 z
,但它没有用 - ../foo:/app/foo:Z
。我试过运行chmod
,但是不允许操作
Azure 管道:
pool:
vmImage: 'ubuntu-latest'
您可以尝试在管道上创建一个文件夹:
- task: CmdLine@2
inputs:
script: 'mkdir .foo'
workingDirectory: System.DefaultWorkingDirectory
所以这实际上会在 System.DefaultWorkingDirectory/.foo
中创建一个 .foo 文件夹
现在,如果您想进入该文件夹,您可以执行以下操作:
- task: CmdLine@2
inputs:
script: |
cd '($System.DefaultWorkingDirectory)/.foo'
dir
或者您可以只在代码中查看 ref 的完整路径:
- task: CmdLine@2
inputs:
script: |
echo '($System.DefaultWorkingDirectory)/.foo'
然后,一旦文件制作完成,您就可以使用 docker 挂载它,这里的答案可能对此有所帮助:
基本上你必须改变你的步骤。
我正在从主机到容器安装一个卷,在 运行 连接 docker 容器时不会出现该卷。
volumes:
- "../foo:/app/foo"
foo
文件夹将由 docker 创建。容器将在 foo
内创建额外的文件夹和文件。同样,主机内的另一个应用程序将在 foo
内创建其他文件夹和文件。我的期望是所有内容都应该放在容器应用程序和主机应用程序的 foo
文件夹中。
这在 Mac 中工作正常,但 运行在 Azure Pipelines 中使用相同的方法无法从主机创建其他文件和文件夹。
Error: EACCES: permission denied, mkdir './foo'
at Object.mkdirSync (fs.js:921:3)
我试过在卷安装的末尾添加 z
,但它没有用 - ../foo:/app/foo:Z
。我试过运行chmod
,但是不允许操作
Azure 管道:
pool:
vmImage: 'ubuntu-latest'
您可以尝试在管道上创建一个文件夹:
- task: CmdLine@2
inputs:
script: 'mkdir .foo'
workingDirectory: System.DefaultWorkingDirectory
所以这实际上会在 System.DefaultWorkingDirectory/.foo
中创建一个 .foo 文件夹现在,如果您想进入该文件夹,您可以执行以下操作:
- task: CmdLine@2
inputs:
script: |
cd '($System.DefaultWorkingDirectory)/.foo'
dir
或者您可以只在代码中查看 ref 的完整路径:
- task: CmdLine@2
inputs:
script: |
echo '($System.DefaultWorkingDirectory)/.foo'
然后,一旦文件制作完成,您就可以使用 docker 挂载它,这里的答案可能对此有所帮助:
基本上你必须改变你的步骤。