我有一个非常简单的图像:
FROM node:11-alpine
WORKDIR /app
COPY src /app/src
RUN cd src \
&& npm i --no-cache \
&& npm run build
CMD cd src \
&& npm run start
在构建过程中一切正常,例如一个简单的ls -R /
揭示了以下树:
/:
app/
/app:
src/
/app/src:
package.json ...
但是当我尝试启动它时,我发现以下结构:
/:
app/
/app/:
src/
/app/src/:
src/ ... more files from the context dir that I never COPYed
/app/src/src/:
package.json ...
如果我RUN ls -R /
之后npm run build
得到了“好”树,甚至在ls -R /
之前的一层运行了CMD
我得到了同样的“好”树,但是CMD之后的任何一层(包括CMD本身)都会给我“错误”的树,例如:
CMD ls -R / && cd src && npm run start
它显示/app/src/src
,就像它正在获取上下文目录的所有内容并将它们放在WORKDIR/src
(即/app/src
)之下一样
Docker为什么要这样做?
我在跑步
Docker版本18.09.3,内部版本774a1f4
docker-compose版本1.23.2,内部版本1110ad0
答案 0 :(得分:0)
在家里一个“更清洁”的环境中摆弄之后,我发现,正如评论所表明的,罪魁祸首是卡住的体积,它正在安装[{'Country': 'Westeros',
'ID': '12',
'Name': 'Jon Snow',
'Street': 'Winterfell #45',
'University': 'U of Winterfell',
'Zipcode': '60434'},
{'Country': 'United States',
'ID': '13',
'Name': 'Steve Rogers',
'Street': '108 Chelsea St.',
'University': 'NYU',
'Zipcode': '23333'},
{'Country': 'United States',
'ID': '20',
'Name': 'Peter Parker',
'Street': '34 Tribeca',
'University': 'Yale',
'Zipcode': '32444'},
{'Country': 'Westeros',
'ID': '34',
'Name': 'Tyrion Lannister',
'Street': 'Kings Landing #89',
'University': 'U of Casterly Rock',
'Zipcode': '43543'}]
,即使这样的事情不再存在。我的./myapp:/app/src
文件的“ volumes”部分,然后通过简单的yes | docker系统修剪完成了任务。