我有一个Dockerfile,用Apache / php和redis创建一个图像。 我知道它应该分成2个容器。但是我想知道在运行过程中是否可以启动apache和redis。
现在我可以用两种不同的方式运行:
如果我使用第一种方法运行,我必须打开终端手动启动apache。 如果我使用第二个运行,我必须手动启动REDIS。
通过文档:"If you list more than one CMD then only the last CMD will take effect."我知道只有“redis-server”才会起作用。
那么有没有办法自动设置展位? 。
这是我的Dockerfile:
#!/usr/bin/env bash
exec apache2-foreground &
exec redis-server &
这是run.sh
#!/bin/bash
set -e
# Check if our environment variable has been passed.
if [ -z "${REMOTE_HOST}" ]
then
echo "REMOTE_HOST has not been set."
exit 1
else
sed -i.bak "s/\$REMOTE_HOST/${REMOTE_HOST}/g" /usr/local/etc/php/php.ini
fi
exec "$@"
这是entrypoint.sh
{{1}}
答案 0 :(得分:2)
您可以通过以下几种方式启动多个流程:
Dockerfile发布后更新
在我尝试回答几个问题之前:
话虽如此,我想我有一个解决方案: - )
run.sh
#!/bin/bash
set -e
# Check if our environment variable has been passed.
if [ -z "${REMOTE_HOST}" ]
then
echo "REMOTE_HOST has not been set."
exit 1
else
sed -i.bak "s/\$REMOTE_HOST/${REMOTE_HOST}/g" /usr/local/etc/php/php.ini
fi
echo "Starting redis"
exec redis-server &
exec "$@"
RUN figlet EXPOSE_PORTS
EXPOSE 80
#EXPOSE 6379
EXPOSE 9000
CMD ["apache2-foreground"]
重建并享受乐趣: - )