首页 > 解决方案 > 将目录中的文件复制到与 Dockerfile 不同级别的 docker 容器

问题描述

我试图在 Dockerfile 中创建 docker 映像时复制目录的内容,但是在复制它时给了我错误-

复制失败:stat /var/lib/docker/tmp/docker-builder108255131/Users/user_1/media:没有这样的文件或目录

我在 Dockerfile 中有以下文件-

COPY /Users/user_1/media/. /code/project_media/

媒体目录位于单独的目录级别,然后是 Dockerfile。

标签: docker

解决方案


抱歉,每个 dockerfile 文档:

可以指定多个资源,但文件和目录的路径将被解释为相对于构建上下文的源

https://docs.docker.com/engine/reference/builder/#copy

我通常会有一个用于构建 docker 的脚本,并且在该脚本中会将COPY命令所需的文件复制到“构建的上下文”的同一目录或子目录中(说同一目录的一种非常令人困惑的方式因为 dockerfile 在)

DOCKER_BUILD_DIR="./build/docker"
DOCKERFILE="./docker/Dockerfile"
MEDIA_FILES="/Users/user_1/media"

mkdir -p "${DOCKER_BUILD_DIR}/${MEDIA_FILES}"
cp -f "${DOCKERFILE}" "${DOCKER_BUILD_DIR}/"
cp -rf "${MEDIA_FILES}" "${DOCKER_BUILD_DIR}/${MEDIA_FILES}/.."

docker build "${DOCKER_BUILD_DIR}"

推荐阅读