【发布时间】:2020-07-31 16:52:26
【问题描述】:
我想先运行 booksServer,然后是 customersServer,然后运行 main.js
但在启动 main.js 之前,我想确保 customersServer 和 booksServer 先运行。
我该如何正确地做到这一点?
这是我现在的 dockerfile
FROM node:12.14.0
WORKDIR /usr/src/app
COPY package*.json ./
COPY . /usr/src/app
RUN npm install
RUN npm install nodemon -g
EXPOSE 4555
CMD nodemon /books/booksServer.js && nodemon /customers/customersServer.js && node /main/main.js
我知道通常你想为多个进程分离容器,但我在执行此操作时遇到了 gRPC 问题...所以我现在想将其作为单个 dockerfile 尝试。
【问题讨论】:
-
我认为你最好运行 3 个容器并尝试修复 gRPC/网络问题。
docker-compose非常适合在本地开发中运行多个容器。 -
同意,我决定这样做。我目前正在尝试使用 wait-for-it (github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh) 以便主服务等待服务器启动。有点困惑等待它,但浏览了一些文章
-
作为一种解决方法,在命令之间休眠呢?
nodemon a.js & sleep 10 && node..... -
我想我的问题是这是一个有效的 CMD 吗? CMD nodemon /books/booksServer.js && nodemon /customers/customersServer.js && node /main/main.js
-
根据the docs看来是有效的
标签: docker dockerfile docker-machine docker-registry