【问题标题】:Docker is not copying subdirectory into ContainerDocker 没有将子目录复制到容器中
【发布时间】:2020-05-24 11:45:37
【问题描述】:

我有以下目录结构

|-Dockerfile
|-README.md
|-angula.json
|-package.json
|-...
|-src
   |-index.html
   |-main.ts
   |-...
   |app
     |-app.component.html
     |...

现在我希望在启动时将所有内容复制到容器中。为此,我将以下内容放入 Dockerfile:

From node:12.15.0-alpine

RUN mkdir -p /app
WORKDIR /app

COPY package.json /app/

RUN ["npm","install"]

COPY . /app

EXPOSE 4200/tcp

CMD ["npm", "start", "--", "--host", "0.0.0.0", "--poll", "500"]

当我现在构建和运行 Dockerfile 时,我遇到了以下问题,即目录 src 及其所有子目录没有被复制。

当我运行docker exec -it [container-name] sh 然后键入sh 时,与Dockerfile 位于同一目录中的所有文件都在那里。但是,如果我随后进入 src 文件夹,它是空的。

我希望使用 COPY . /app 可以将整个文件夹及其所有子目录复制到容器中。为什么不是这样?我错过了什么?

【问题讨论】:

  • 你的 Dockerfile 旁边有 .dockerignore 吗?在 COPY 命令后添加 RUN ls -l /app/src 并重建图像。检查 docker build 命令的输出。你看到你的 src 目录的内容了吗?还有你用来启动容器的 docker run 命令是什么?
  • 你是如何启动容器的?你有.dockerignore 文件吗?
  • @Mihai @David Maze 我不使用 -dockerignore 文件。我正在使用以下命令来构建和运行容器:sudo docker built -t mean-appsudo docker run -it --rm -p 4200:4200 -v ${pwd}/src:/app/src mean-app
  • 您不需要-v ${pwd}/src:/app/src,因为您已经复制了图像中的所有内容。
  • @Mihai 我知道,但我不想每次更改代码时都重新启动容器。还是您认为这是导致问题的原因?

标签: docker


【解决方案1】:

这是一个非常愚蠢的错误...当我挂载src 目录时,我使用了${pwd} 而不是$(pwd),这导致了空文件夹,尽管我之前复制了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2021-04-03
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多