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
1
dcsuibian 2022-06-13 11:09:19 +08:00
不应该是宿主机上 build 好然后 COPY 进去的吗?
|
2
GiantHard 2022-06-13 11:09:41 +08:00 3
|
3
xiancai 2022-06-13 11:15:26 +08:00
编写一个 shell 脚本,在 build.sh 内执行 npm , 然后 sleep 1000 这样 sh 没有退出时,容器也不会被重启
|
5
c1273082756 2022-06-13 11:21:01 +08:00
@dzdh 我也觉得是 build 好之后 copy 进去, 因为配置好.gitignore 文件就不存在污染宿主机的这种情况吧
|
6
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 不更好吗 |
7
c1273082756 2022-06-13 11:39:18 +08:00
@dzdh 你说得有道理, 学习了, 以后 copy 进去再 build
|
8
dzdh 2022-06-13 11:46:26 +08:00
|
9
dcsuibian 2022-06-13 13:30:19 +08:00
@c1273082756 你这是,怕 npm 供应链投毒?
理解,但我总体上来说还是比较相信那些依赖库的。(虽然 npm 的安全事故确实挺多) 还有是开发的时候怎么办呢,npm serve/dev/start 的时候不也得在宿主机里装好依赖么? |
10
binhb 2022-06-13 13:34:39 +08:00 via iPhone
docker 构建失败,我都是开一个新的交互式容器,手动执行命令
|
11
Thtdmo 2022-06-13 14:43:08 +08:00
docker ps -a 可以看到一个随机名称的退出的容器就是 build 的容器可以 exec -it /bin/bash 的形式进去查看日志
|
12
Er1c0 OP @Thtdmo 进不去
docker exec -it great_rubin /bin/bash 报错 Error response from daemon: Container 9b6a76 is not running |
13
kapr1k0rn 2022-06-13 20:41:15 +08:00 via iPhone
把 log 文件临时挂到 host 的目录?
|
14
freevioce 2022-06-14 09:50:55 +08:00
我一般做法是找到最近临时创建层的镜像 docker images -a ,把它 run 成容器,在里面执行失败的命令
|
15
dier 2022-06-14 11:36:59 +08:00
构建过程会正常打印出日志信息呀,难道你构建的时候没有任何信息输出吗
|