【问题标题】:docker-compose IOError: Can not access file in contextdocker-compose IOError:无法在上下文中访问文件
【发布时间】:2018-08-17 05:12:24
【问题描述】:

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

【问题讨论】:

  • 你有办法解决这个问题吗?我在 Raspberry pi 上使用 docker-compose,但出现此错误。
  • 你的 docker 文件在哪里?
  • 嗨@Sean!您是否曾经在我的回答中尝试过解决方案#1?如果你已经解决了这个问题,那么请让人们知道你做了什么——这个问题已经引起了一些关注。最好的问候
  • 在我的情况下,将目标文件 chmod 设置为 777 解决了问题

标签: docker docker-compose docker-for-windows docker-desktop


【解决方案1】:

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

摘自 Maximum Path Length Limitation 上的 Microsoft 文档

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

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

解决方案 #1

升级到 docker-compose version 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

Install docker-compose via pip。这似乎已经解决了其他遇到此问题的人的问题。

来自 docker-compose 文档的专家:

对于alpine,需要以下依赖包:py-pippython-devlibffi-devopenssl-devgcclibc-devmake

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

pip install docker-compose

如果你没有使用 virtualenv,

sudo pip install docker-compose

pip 6.0 或更高版本是 必填。

【讨论】:

    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2020-05-20
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多