如何在docker Entrypoint中启动以下服务

问题描述 投票:0回答:3

我想在容器运行时从服务开始。

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

请告诉我怎么做

提前致谢。

docker docker-compose dockerfile aws-ecs
3个回答
1
投票

由于您在单个容器中运行多个应用程序,因此我不建议使用整体设计。如果任何一个服务无法启动,您就没有错误处理或反馈。也就是说,修复当前问题可以通过使用在没有输入时不会退出的命令来完成。

ENTRYPOINT service celeryd start \
 && service celerybeat start \
 && service php7.0-fpm start \
 && service rsyslog start \
 && tail -f /dev/null

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,因此容器将在执行入口点后立即结束。您应该提供一个不结束的命令


0
投票

将所有命令设置为start.sh文件并赋予执行权限,在构建docker镜像时将该文件复制到docker镜像

在CMD [“./start.sh”]下写入docker文件

© www.soinside.com 2019 - 2024. All rights reserved.