我想在容器运行时从服务开始。
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
请告诉我怎么做
提前致谢。
由于您在单个容器中运行多个应用程序,因此我不建议使用整体设计。如果任何一个服务无法启动,您就没有错误处理或反馈。也就是说,修复当前问题可以通过使用在没有输入时不会退出的命令来完成。
ENTRYPOINT service celeryd start \
&& service celerybeat start \
&& service php7.0-fpm start \
&& service rsyslog start \
&& tail -f /dev/null
您尝试作为入口点执行的命令是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,因此容器将在执行入口点后立即结束。您应该提供一个不结束的命令
将所有命令设置为start.sh文件并赋予执行权限,在构建docker镜像时将该文件复制到docker镜像
在CMD [“./start.sh”]下写入docker文件