【发布时间】:2019-12-02 00:16:32
【问题描述】:
Docker 如何构建容器?我想不通。我要:
- 构建容器
- 在其中传递本地文件夹
- 在卷文件夹中的容器中安装 npm(使用 dockerfile)(这样,我可以在本地驱动器上看到它)
- 在我的 yaml 配置文件中运行命令
我尝试使用ls 命令列出文件夹的内容,但/src/ 始终为空(打印:src)
我的docker-compose.yml:
version: '3'
services:
node:
build:
context: .
dockerfile: Dockerfile.node
volumes:
- ./src:/src
command: run develop
tty: true
我的 Dockerfile.node:
FROM node:12
WORKDIR /src
COPY ./src/package*.json ./src/
RUN ls
RUN cd ./src
RUN ls
RUN npm install
RUN ls
在运行 npm install 命令时我收到了这个错误:
npm WARN saveError ENOENT: no such file or directory, open '/src/package.json'
我用命令docker-compose up --build启动项目
我的文件夹结构是:
/
src
--package.json
docker-compose.yml
Dockerfile.node
请帮忙,提前谢谢。
【问题讨论】:
-
Docker 并没有真正按照您描述的方式工作。如果要在本地源码树上运行本地命令,直接运行
node即可;它将有更少的陷阱和移动部件,它也能正常工作。通常,Dockerfile中的步骤在源树的独立副本上运行,并且永远不会反映在主机上,并且Dockerfile中的所有内容都发生在docker run命令中的任何内容或大多数选项之前docker-compose.yml文件生效——特别是构建序列永远不会看到已安装的卷。 -
大卫迷宫 - 谢谢,好点子!在知道这一点之前,我已经受了很多苦。