来自另一个容器(主管)的docker调用程序(nodejs)

时间:2017-06-13 15:57:09

标签: node.js docker supervisor

我的docker-compose.yml就像:

nodejs:
  build: .
  dockerfile: Dockerfile-nodejs
  tty: true
  ports:
    - "${SOCKET_PORT}:8081"
  volumes:
    - ../node:/var/www/html

supervisor:
  build: .
  dockerfile: Dockerfile-supervisor
  tty: true
  volumes:
    - ..:/var/www/html
    - ./config/supervisor/conf.d:/etc/supervisor/conf.d
  links:
    - nodejs:nodejs

我已经创建了超级用户程序配置文件:

[program:nodejs.socket]
command=nodejs /var/www/html/node/server.js
autostart=true

但是:我无法运行此程序,因为主管的容器

  

无法找到命令'nodejs'

问题:我可以从supervisor-container实际运行nodejs,还是必须在nodejs-container中安装supervisor?

1 个答案:

答案 0 :(得分:0)

  

问题:我可以从supervisor-container实际运行nodejs,还是必须在nodejs-container中安装supervisor?

您必须在包含nodejs的映像中安装supervisor,因为supervisor需要执行nodejs,这意味着将其作为子进程。

这是常见的方式。 但是,您可以在两个容器之间共享pid命名空间,但您也需要在同一图像中安装nodejs。所以在那一点上,这变得很棘手。