Docker如何构建容器?我不知道。我想要:
我尝试使用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
在RUN 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
请帮助,谢谢。
答案 0 :(得分:1)
RUN
仅在当前npm install
命令中可用,因为Dockerfile每个命令都在单独的shell中运行,因此,当要运行/src
时,您的工作就是WORKDIR,即cd .src
不是您期望使用的/src/src
,应该是RUN pwd
#/src
RUN cd ./src #here /src/src
RUN ls
#/src <-- back to WORKDIR, while you are expecting /src/src
RUN npm install
。
WORKDIR
简而言之,dockerfile中有cd
而不是RUN cd ./src && npm i
。
您必须选择,更改命令
COPY ./src/package*.json .
或更改复制命令,其余部分保持不变。
{{1}}