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

时间:2018-05-28 10:07:45

标签: docker docker-compose dockerfile aws-ecs

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

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

请告诉我该怎么做

提前致谢。

3 个答案:

答案 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文件