搜索

首页  >  问答  >  正文

我将php和nginx一起封在了一个docker里,如何让nginx和php自启动?

我每次新建一个容器时,都要进入容器里面,启动nginx和php,请问如何每次新建容器时都让nginx和php自启动?

曾经蜡笔没有小新曾经蜡笔没有小新2738 天前357

全部回复(2)我来回复

  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:01:56

    你可以使用supervisord来管理

    1. 先进入容器安装supervisord,(安装过程网上搜下)

    推荐将主配置文件放在:/etc/supervisord.conf vim /etc/supervisord.conf

    [unix_http_server]
    file=/var/run/supervisor.sock
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    
    [supervisord]
    nodaemon=true
    
    [supervisorctl]
    serverurl=unix:///var/run/supervisor.sock
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    

    然后在/etc/supervisor/conf.d/添加php和nginx的启动命令

    例如添加nginx, vim /etc/supervisor/conf.d/nginx_super.conf

    [program:nginx]
    command=nginx
    1. 然后提交一个新的镜像出来,例如

    docker commit -a "qclaogui" -m "bulabula" nginx-php:commit

    1. 编写新的Dokcerfile

    FROM nginx-php:commit
    
    MAINTAINER xxx@xxx.com
    
    EXPOSE 80 443
    
    ENTRYPOINT ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
    1. 重新构建一个镜像

    docker build -t nginx-php:v1 .

    1. 基于新构建的镜像运行容器

    docker run --name test-nginx-php -p 8081:80 -d nginx-php:v1注意这里用的是-d参数

    根据你的情况,大致解决思路是这个样子,可以参考一下

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:01:56

    你需要在 Dokcerfile 里写上 CMD ["nginx", "-g", "daemon off;"]

    回复
    0
  • 取消回复