无法使用Dockerfile CMD启动2个任务

时间:2018-03-24 21:17:54

标签: dockerfile

我对使用CMD命令的Dockerfile有疑问。我正在尝试设置一个服务器,它需要在启动时在docker容器中运行2个命令。我可以自己运行1或其他服务,但如果我尝试编写脚本同时运行2个服务,它就会失败。我已经尝试了各种各样的nohup,&,linux任务后台,但我还是无法解决它。

这是我正在尝试实现此目标的项目: https://djangofan.github.io/mountebank-with-ui-node/

import { Component, OnInit, Input} from '@angular/core';

    declare var $:any;

    @Component({
      selector: 'app-add-modal',
      templateUrl: './add-modal.component.html',
      styleUrls: ['./add-modal.component.scss']
    })
    export class AddModalComponent implements OnInit{

      @Input() catsToShow;

      constructor() { }

     ngOnInit() {}

     ngOnChanges(changes: SimpleChanges) {

        if(changes.catsToShow) {

           $(".formAddContainer").iziModal({ width: '80%', padding: 10, borderBottom: false, background: 'rgba(136, 160, 185,0)' });
           $('#addNewModal').iziModal('open');

        }

    }

显示此输出但端口未侦听:

#entryPoint.sh
#!/bin/bash
nohup /bin/bash -c "http-server -p 80 /ui" &
nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection" &
jobs -l

这是我的Dockerfile:

djangofan@MACPRO ~/workspace/mountebank-container (master)*$ ./run-container.sh 
f5c50afd848e46df93989fcc471b4c0c163d2f5ad845a889013d59d951170878
f5c50afd848e46df93989fcc471b4c0c163d2f5ad845a889013d59d951170878   djangofan/mountebank-example   "/bin/bash -c /scripts/entryPoint.sh"   Less than a second ago   Up Less than a second   0.0.0.0:2525->2525/tcp, 0.0.0.0:4546->4546/tcp, 0.0.0.0:5555->5555/tcp, 2424/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:2424->80/tcp   nervous_lalande
[1]-     5 Running                 nohup /bin/bash -c "http-server -p 80 /ui" &
[2]+     6 Running                 nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection" &

1 个答案:

答案 0 :(得分:1)

docker容器内的一个进程必须不以后台模式运行,因为docker容器正在运行,而其中的主进程正在运行。

/scripts/entryPoint.sh应为:

#!/bin/bash
nohup /bin/bash -c "http-server -p 80 /ui" &
nohup /bin/bash -c "mb --port 2525 --configfile /mb/imposters.ejs --allowInjection"

Dockerfile中其他一切都很好。