我正在创建一个服务,除其他外,它允许用户随意启动/停止 Golang Web 服务器。为了让 Nodejs 服务器在类似情况下运行,我只需nodejs /path/to/index.js &disown在容器启动时运行的批处理文件中发出一个。必要的位
ADD gorun.sh /usr/local/bin/gorun.sh
RUN chmod +x /usr/local/bin/gorun.sh
...
ENTRYPOINT ["/bin/bash"]
CMD ["/usr/local/bin/gorun.sh"]
每次都可以完美运行。在gorun.sh我有nodejs /path/to/index.js & disown线路。
现在我正在尝试让 Golang Web 服务器在类似条件下运行,我想我会尝试相同的方法。我修改了 gorun.sh 脚本来读取
#! /bin/bash
go run /path/to/index.go & disown;
ps aux | grep go
现在奇怪的是。我尝试通过两种方式启动 Go 服务器
纯粹作为一个实验,我启动了 Docker 容器,并gorun从终端调用了一个终端。Golang 服务器立即启动,一切都很正常。
为了更好地模拟现实世界中的工作方式 - 我将一个文件 startgo.txt 放在一个预先确定的位置,然后由一个调用 gorun 的 CRON 作业获取。这一次,没有快乐 - 服务器没有启动。
为什么不直接go run /path/to/index.go & disown从 Docker 容器启动脚本调用?也尝试过,结果相同:服务器无法启动。
我不清楚这里发生了什么。为什么 Nodejs 服务器启动而 Golang 服务器拒绝点空白?如果我在终端内运行相同的脚本,为什么它会启动?
POPMUISE
相关分类