Docker将程序作为守护程序运行

时间:2016-09-15 13:53:18

标签: linux bash docker

我有一个在docker(squid)中运行的程序,它只能在守护进程模式下运行时才能执行。

我的问题是,给定一个sh入口点,如何在没有docker退出的情况下让程序在后台运行?

这是我的(简化)入口点:

#!/bin/bash
set -e

# default behaviour is to launch squid
if [[ -z ${1} ]]; then
        if [[ ! -d ${SQUID_CACHE_DIR}/00 ]]; then
                echo "Initializing cache..."
                $(which squid) -N -f /etc/squid4/squid.conf -z
        fi
        echo "Starting squid..."
        exec $(which squid) -f /etc/squid4/squid.conf -YCd 1
else
        exec "$@"
fi

1 个答案:

答案 0 :(得分:0)

通常,当您在注销后执行要继续运行的命令时,您将使用'nohup'命令,如下所示:

nohup [COMMAND] &

您应该考虑在启动容器时启动squid。您可以在Dockerfile中定义它。 Dockerfiles告诉'docker build'命令如何创建图像。这样,当您使用“docker run”启动容器时,您的应用程序将立即启动,而无需与容器进行交互。