【发布时间】: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-app和sudo docker run -it --rm -p 4200:4200 -v ${pwd}/src:/app/src mean-app -
您不需要
-v ${pwd}/src:/app/src,因为您已经复制了图像中的所有内容。 -
@Mihai 我知道,但我不想每次更改代码时都重新启动容器。还是您认为这是导致问题的原因?
标签: docker