【发布时间】:2018-11-11 21:46:11
【问题描述】:
我在 run.sh 文件中有一个 dockerised nodejs 应用程序 --
#!/bin/bash
docker run -ti --rm -v $PWD:/app -p 8080:8080 foo
docker exec uod npm run gulp start-live
这将启动我的应用程序并运行 gulp 脚本。我在 package.json 中将“gulp”定义为脚本。 (旧项目所以是的仍在使用 gulp :/)
唯一的问题是我无法使用 ctrl+p+q 与 docker 分离
如果我改为将运行命令移动到Dockerfile --
CMD ["npm", "run", "gulp", "start-live"]
这做同样的事情,但我能够在它运行后从容器中分离出来。
为了能够从那里运行命令并能够分离,我可以在运行文件中做些什么不同的事情?
【问题讨论】:
-
“将命令移动到 Dockerfile”可能是正确的答案:它是容器所做的一件事,您通常不需要
docker exec来启动容器的主进程。 -
是的,但目前我需要根据环境更改运行配置。发现在 run.sh 而不是 Dockerfile 中更容易做到这一点