【问题标题】:Docker: error copying file from host to container-file not foundDocker:错误将文件从主机复制到容器文件未找到
【发布时间】:2021-05-15 06:57:24
【问题描述】:

我正在尝试将文件从我的主机 (Ubuntu 18.04) 复制到 python 容器,但我无法复制它。目的是为我的默认声音设备获取我的特定配置并将其传输过来,这样我以后就不必手动进行了。

我尝试了几种变体,我想知道我是否误解了如何复制文件。我已经检查了 stackoverflow 上的人们就这个问题提出的文档和其他各种问题:

How to copy file from host to container using Dockerfile

但是当我尝试传统命令时出现错误:

docker-compose build 
...
Step 7/7 : COPY /config/.asoundrc ~/.asoundrc
COPY failed: file not found in build context or excluded by .dockerignore: stat config/.asoundrc: file does not exist

我的根目录中没有 docker 忽略文件。我的目录如下所示:

dejavu (root name)
-config
--.asoundrc
-docker-compose.yaml
...

为了明确,我想将文件config/.asoundrc从我的主机复制到容器映像,特别是目录目标~/.asoundrc

这是我的 dockerfile:

FROM python:3.7
RUN apt-get update -y && apt-get upgrade -y
RUN apt-get install \
    gcc nano \
    gdebi alsa-utils usbutils ffmpeg libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 \
    postgresql postgresql-contrib pulseaudio -y
RUN pip install numpy scipy matplotlib pydub pyaudio psycopg2 sounddevice

WORKDIR /code
COPY /config/.asoundrc ~/.asoundrc

这里是原始仓库,目前正在从一个开源项目修改:https://github.com/datafaust/dejavu

【问题讨论】:

  • COPY ~/.asoundrc /config/.asoundrc

标签: docker docker-compose dockerfile containers


【解决方案1】:

我相信你的COPY 命令有两个问题:

  1. 您的源路径以斜杠开头,不应该
  2. 您的目标路径包含一个 ~,它不会像在 shell 脚本中那样转换为主目录。

试试这个:

COPY config/.asoundrc /root/.asoundrc

另外,看了你的docker-compose.yml之后,很明显main问题出在了。

您的 docker-compose 文件定义了构建上下文:

services:
  python:
    build:
      context: ./docker/python

这意味着这是所有COPY 命令相关的目录。由于此目录仅包含 Dockerfile,而不是请求的 config/.asoundrc 文件,因此构建失败并出现明显错误。

您应该将每个Dockerfile 放在与其构建的应用程序相同的目录中。所以,修复它:

  • Dockerfiledocker 移动到dejavu
  • docker-compose.yml 中的构建上下文从./docker/python 更改为dejavu(另请注意,不需要前导点)。

【讨论】:

  • 没有骰子,我收到以下错误:Step 5/8 : WORKDIR /code ---> Running in 6a454bd62b9d Removing intermediate container 6a454bd62b9d ---> 01e08b2b84b4 Step 6/8 : COPY config/.asoundrc /root/.asoundrc COPY failed: file not found in build context or excluded by .dockerignore: stat config/.asoundrc: file does not exist 基本上主要问题似乎是该文件不存在,这没有意义
  • 那么您的问题缺少一些细节。问题可能在于docker-compose.yml 中的构建上下文定义。能分享一下最小的 docker-compose 服务定义吗?
  • 嘿,丹尼,当然。我将链接添加到我的 github 存储库,您将在其中看到 docker-compose.ymldockerfile。感谢您的帮助!
  • 您的构建上下文是问题所在。我更新了答案。
  • 感谢您的帮助,非常感谢
猜你喜欢
  • 2020-01-03
  • 2014-03-29
  • 2015-07-08
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
相关资源
最近更新 更多