我想在容器运行时从服务开始。
sudo service celeryd start
sudo service celerybeat start
service php7.0-fpm start
service rsyslog start
当前以下命令无效AWS ECS。并抛出一些错误。
ENTRYPOINT sudo service celeryd start
&& sudo service celerybeat start
&& service php7.0-fpm start
&& service rsyslog start && bash
请告诉我该怎么做
提前致谢。
答案 0 :(得分:1)
您尝试作为入口点执行的命令是一个bash表达式,因此它们必须在bash终端内执行:
ENTRYPOINT ["/bin/bash", "-c", "sudo service celeryd start && sudo service celerybeat start && sudo service php7.0-fpm start && sudo service rsyslog start && tail -f /dev/null"]
此外,您的上一个命令是bash,因此容器将在执行入口点后立即结束。你应该提供一个不结束的命令
答案 1 :(得分:1)
由于您在单个容器中运行多个应用程序,因此我不建议使用整体设计。如果任何一个服务无法启动,您就没有错误处理或反馈。也就是说,修复当前问题可以通过使用在没有输入时不会退出的命令来完成。
ENTRYPOINT service celeryd start \
&& service celerybeat start \
&& service php7.0-fpm start \
&& service rsyslog start \
&& tail -f /dev/null
答案 2 :(得分:0)
将所有命令放入start.sh文件并赋予执行权限,在构建docker image时将这些文件复制到docker镜像
在CMD [“./start.sh”]
下写入docker文件