我有一个在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
答案 0 :(得分:0)
通常,当您在注销后执行要继续运行的命令时,您将使用'nohup'命令,如下所示:
nohup [COMMAND] &
您应该考虑在启动容器时启动squid。您可以在Dockerfile中定义它。 Dockerfiles告诉'docker build'命令如何创建图像。这样,当您使用“docker run”启动容器时,您的应用程序将立即启动,而无需与容器进行交互。