docker - Docker:将文件从主机复制到容器文件时出错
问题描述
我正在尝试将文件从我的主机(Ubuntu 18.04)复制到 python 容器,但我无法复制它。目的是为我的默认声音设备获取我的特定配置并将其传输过来,这样我以后就不必手动进行了。
我尝试了几种变体,我想知道我是否误解了如何复制文件。我已经检查了stackoverflow上的文档和其他各种问题,例如:
但是当我尝试传统命令时出现错误:
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
这是我的码头文件:
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
命令中有两个问题:
- 您的源路径以斜杠开头,它不应该
- 您的目标路径包含一个
~
,它不会像在 shell 脚本中那样转换为主目录。
试试这个:
COPY config/.asoundrc /root/.asoundrc
此外,在查看您的 后docker-compose.yml
,很明显主要问题在那里。
您的 docker-compose 文件定义了一个构建上下文:
services:
python:
build:
context: ./docker/python
这意味着这是所有COPY
命令都相对的目录。由于此目录仅包含Dockerfile
,而不包含请求的config/.asoundrc
文件,因此构建失败并出现明显错误。
您应该将它们Dockerfile
放在与其构建的应用程序相同的目录中。所以,要修复它:
- 将
Dockerfile
from移动docker
到dejavu
。 - 将构建上下文
docker-compose.yml
从./docker/python
to更改为dejavu
(另请注意,不需要前导点)。
推荐阅读
- python - 为什么我使用不同的算法得到不同的引导结果?
- python - 使用 Alpha Vantage API 计算投资回报率
- html - 如何检查一个值是否为空并返回类似 NA 的虚拟文本
- python - 在pytorch中映射张量
- git - 警告:LF 将被 CRLF 替换
- vba - 在 Dir 函数 (VBA) 中,“ReadOnly”属性的功能是什么?似乎 vbNormal 也列出了“只读”文件
- r - 根据其他列从列中提取特定值
- python - 如何将 \u00000013\u0007 转换为 utf8 人类可读
- oauth-2.0 - Google Ads Reporting API 标准访问令牌刷新问题
- node.js - 无效的正则表达式猫鼬