8

Docker build 将构建并运行映像,但在 docker-compose 期间出现以下错误:

    > .\docker-compose-Windows-x86_64.exe -f C:\t\tea\docker-compose.yml up
Building web
Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose\cli\main.py", line 71, in main
  File "compose\cli\main.py", line 127, in perform_command
  File "compose\cli\main.py", line 1039, in up
  File "compose\cli\main.py", line 1035, in up
  File "compose\project.py", line 465, in up
  File "compose\service.py", line 327, in ensure_image_exists
  File "compose\service.py", line 999, in build
  File "site-packages\docker\api\build.py", line 149, in build
  File "site-packages\docker\utils\build.py", line 15, in tar
  File "site-packages\docker\utils\utils.py", line 100, in create_archive
  File "tarfile.py", line 1802, in gettarinfo
  FileNotFoundError: [WinError 3] The system cannot find the path specified: 
  'C:\\t\\tea\\src\\app\\accSettings\\account-settings-main\\components\\account-settings-catalog\\components\\account-settings-copy-catalog-main\\components\\account-settings-copy-catalog-destination\\components\\account-settings-copy-destination-table\\account-settings-copy-destination-table.component.html'
[18400] Failed to execute script docker-compose

> docker -v
Docker version 18.03.0-ce-rc1, build c160c73
> docker-compose -v
docker-compose version 1.19.0, build 9e633ef3

我在本地组策略编辑器中启用了 Win32 长路径,但没有任何运气解决这个问题。

如果有帮助,这里是 docker-compose.yml:

version: '3'

services:
  web:
    image: web
    build:
      context: .
      dockerfile: Dockerfile
4

1 回答 1

0

在某些情况下,这是 docker-compose 的一个已知问题。并且,它与 Windows 上 260 个字符的 MAX_PATH 限制有关。

来自 Microsoft 文档的关于最大路径长度限制的摘录

在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为 MAX_PATH,定义为 260 个字符。

通过阅读此内容,似乎解决方案取决于您的 docker-compose 版本和 Windows 版本。以下是我找到的解决方案的摘要:

解决方案#1

升级到 docker-compose 1.23.0或更高版本。1.23.0 版本中有一个错误修复,描述为:

修复了 Windows 客户端上超过 260 个字符的路径会导致 docker-compose 构建失败的问题。

解决方案#2

启用 NTFS 长路径:

  1. 点击 Windows 键,输入 gpedit.msc 并按 Enter。
  2. 导航到本地计算机策略 > 计算机配置 > 管理模板 > 系统 > 文件系统 > NTFS。
  3. 双击启用 NTFS 长路径选项并启用它。

如果您使用的 Windows 版本不提供对组策略的访问权限,则可以改为编辑注册表。

  1. 点击 Windows 键,键入 regedit 并按 Enter。
  2. 导航到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\ CurrentVersion\Group Policy Objects\ {48981759-12F2-42A6-A048-028B3973495F} Machine\System\CurrentControlSet\Policies
  3. 选择 LongPathsEnabled 键,如果不存在,则将其创建为 DWORD(32 位)值。
  4. 将值设置为 1 并关闭注册表编辑器。

解决方案#3

通过 pip 安装 docker-compose。这似乎已经解决了其他遇到此问题的问题。

来自 docker-compose 文档的专家:

对于 alpine,需要以下依赖包:py-pip, python-dev, libffi-dev, openssl-dev, gcc, libc-dev, 和make.

Compose 可以使用pip. 如果您使用 安装 pip,我们建议您使用 virtualenv,因为许多操作系统都有与 docker-compose 依赖项冲突的 python 系统包。请参阅 virtualenv 教程以开始使用。

pip install docker-compose

如果你没有使用 virtualenv,

sudo pip install docker-compose

需要 pip 6.0 或更高版本。

于 2020-04-03T19:49:55.767 回答