【问题标题】:Run apache/php/nginx in background Docker container在后台 Docker 容器中运行 apache/php/nginx
【发布时间】:2017-06-19 08:57:13
【问题描述】:

我是 docker 新手。我正在尝试运行一个运行 Apache and PHPPHP-FPM 的 docker 容器。

这样

docker run -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache

并将 STDIN/STDOUT 附加到我的主机上

docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache

似乎工作正常,但我读到了

按照设计,以分离模式启动的容器在 root 时退出 用于运行容器退出的进程。

这是否意味着如果我从远程 ssh 连接启动容器然后关闭它,docker 容器将停止?

我正在构建基于

的自定义 docker 映像

库/php/

我需要我的图像在后台自动启动,而不是在前台。

我怎样才能得到这种行为?

【问题讨论】:

    标签: php apache docker docker-compose dockerfile


    【解决方案1】:

    按照设计,以分离模式启动的容器会在用于运行容器的根进程退出时退出。

    此上下文中的根进程是容器内部的根进程,而不是用于docker run 容器的根进程。此过程通常是 Dockerfile 中的 ENTRYPOINT 或 CMD。对于 Nginx,您经常会看到如下内容:

    ENTRYPOINT ['nginx', '-g', 'daemon off']

    当 nginx 进程退出时,此容器将退出(不应该立即退出,除非您的 nginx 配置错误,或者其他一些错误将其杀死)。

    如果你有这样的入口点:

    ENTRYPOINT ['nginx', '-t']

    然后容器会测试它找到的任何 nginx 配置文件,在 STDOUT 中给你结果,然后退出。

    【讨论】:

    • 感谢您的回答,在我的情况下使用-d 选项可以吗,它会满足我的要求吗?
    • @bxfvgekd 我会说是的,应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2022-01-13
    • 2016-11-07
    • 2020-07-02
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多