0

我想在容器运行时启动以下服务。

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

请告诉我该怎么做

提前致谢。

4

3 回答 3

3

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

ENTRYPOINT service celeryd start \
 && service celerybeat start \
 && service php7.0-fpm start \
 && service rsyslog start \
 && tail -f /dev/null
于 2018-05-28T13:55:20.993 回答
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,因此容器将在执行入口点后立即结束。您应该提供一个不会结束的命令

于 2018-05-28T10:43:29.650 回答
0

将所有命令 start.sh 文件并授予执行权限,在构建 docker 映像时将该文件复制到 docker 映像

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

于 2018-05-29T16:16:07.707 回答