docker 打前端镜像时,执行 dockerfile 文件,前端 npm run build 失败时怎么进容器看 npm 日志

2022-06-13 11:04:21 +08:00
 Er1c0

docker 打前端镜像时,执行 dockerfile 文件,前端 npm run build 失败时, 怎么进容器看 /root/.npm/_logs/2022-06-13T02_42_11_657Z-debug.log 日志

此时容器运行不起了,也进去不

[root@VM-4-7-centos]# docker exec -it great_rubin /bin/bash Error response from daemon: Container 9b6a76 is not running

1637 次点击
所在节点    问与答
15 条回复
dcsuibian
2022-06-13 11:09:19 +08:00
不应该是宿主机上 build 好然后 COPY 进去的吗?
GiantHard
2022-06-13 11:09:41 +08:00
xiancai
2022-06-13 11:15:26 +08:00
编写一个 shell 脚本,在 build.sh 内执行 npm , 然后 sleep 1000 这样 sh 没有退出时,容器也不会被重启
dzdh
2022-06-13 11:16:16 +08:00
@dcsuibian 那不污染宿主机了吗
c1273082756
2022-06-13 11:21:01 +08:00
@dzdh 我也觉得是 build 好之后 copy 进去, 因为配置好.gitignore 文件就不存在污染宿主机的这种情况吧
dzdh
2022-06-13 11:35:30 +08:00
@c1273082756

.gitignore 是 git commit 时才有用的吧。 我说污染宿主机的意思是,万一你用的哪个包执行了个 install --global 的命令或者 rm 啥东西 这不知道啊。

分阶段构建

from x as build

run ..

copy --from=build build/* ./var/www

不更好吗
c1273082756
2022-06-13 11:39:18 +08:00
@dzdh 你说得有道理, 学习了, 以后 copy 进去再 build
dzdh
2022-06-13 11:46:26 +08:00
@c1273082756 但是副作用每次都会全量下载一次依赖包。。。如果真的有哪个包依赖个什么全局命令你又不知道,就 GG 。

但是我觉得能更好的掌握所有包的依赖情况(尤其是依赖系统命令)也算学习吧。
dcsuibian
2022-06-13 13:30:19 +08:00
@c1273082756 你这是,怕 npm 供应链投毒?
理解,但我总体上来说还是比较相信那些依赖库的。(虽然 npm 的安全事故确实挺多)

还有是开发的时候怎么办呢,npm serve/dev/start 的时候不也得在宿主机里装好依赖么?
binhb
2022-06-13 13:34:39 +08:00
docker 构建失败,我都是开一个新的交互式容器,手动执行命令
Thtdmo
2022-06-13 14:43:08 +08:00
docker ps -a 可以看到一个随机名称的退出的容器就是 build 的容器可以 exec -it /bin/bash 的形式进去查看日志
Er1c0
2022-06-13 15:32:00 +08:00
@Thtdmo 进不去
docker exec -it great_rubin /bin/bash
报错 Error response from daemon: Container 9b6a76 is not running
kapr1k0rn
2022-06-13 20:41:15 +08:00
把 log 文件临时挂到 host 的目录?
freevioce
2022-06-14 09:50:55 +08:00
我一般做法是找到最近临时创建层的镜像 docker images -a ,把它 run 成容器,在里面执行失败的命令
dier
2022-06-14 11:36:59 +08:00
构建过程会正常打印出日志信息呀,难道你构建的时候没有任何信息输出吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/859228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX