我有一个 Dockerfile,它明确定义将上下文目录中的哪些目录和文件复制到应用程序目录。但无论如何,Docker 都会尝试复制上下文目录中的所有文件。
Dockerfile 位于上下文目录中。
我的测试代码和数据文件位于上下文目录正下方的目录中。它尝试复制上下文目录中的所有内容,而不仅仅是复制命令指定的目录和文件。因此,除了指定每个目录和子目录中的每个文件之外,我收到了数百条以下错误消息:
ERRO[0043] Can't add file /home/david/gitlab/etl/testdata/test_s3_fetched.csv to tar: archive/tar: missed writing 12029507 bytes
...
ERRO[0043] Can't close tar writer: archive/tar: missed writing 12029507 bytes
Sending build context to Docker daemon 1.164GB
Error response from daemon: Error processing tar file(exit status 1): unexpected EOF
我对引用的理解是,如果没有 ADD 或 COPY 指令,它只会复制所有文件和目录。
我尝试过以下复制模式
COPY ./name/ /app/name
COPY name/ /app/name
COPY name /app/name
WORKDIR /app
COPY ./name/ /name
WORKDIR /app
COPY name/ /name
WORKDIR /app
COPY name /name
我的 Dockerfile:
FROM python3.7.3-alpine3.9
RUN apk update && apk upgrade && apk add bash
# Copy app
WORKDIR /app
COPY app /app
COPY configfiles /configfiles
COPY logs /logs/
COPY errorfiles /errorfiles
COPY shell /shell
COPY ./*.py .
WORKDIR ../
COPY requirements.txt /tmp/
RUN pip install -U pip && pip install -U sphinx && pip install -r /tmp/requirements.txt
EXPOSE 22 80 8887
我希望它只复制我的文件,而不会出现与尝试复制我未在 COPY 命令中指定的文件相关的错误。由于 Docker 输出由于 aqllw 错误消息而从我的终端窗口滚出,因此我无法查看 COPY 命令是否成功。
最佳答案
构建目录及其下的所有文件都将复制到 docker 构建上下文的初始层。
考虑使用 .dockerignore file从构建中排除文件和目录。
关于docker - 如何限制 Docker 复制哪些目录和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277316/