Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS ECS故障-运行shell脚本启动程序_Shell_Amazon Web Services_Docker_Elixir_Amazon Ecs - Fatal编程技术网

AWS ECS故障-运行shell脚本启动程序

AWS ECS故障-运行shell脚本启动程序,shell,amazon-web-services,docker,elixir,amazon-ecs,Shell,Amazon Web Services,Docker,Elixir,Amazon Ecs,我正在尝试在amazon ECS上运行Docker映像。我正在使用启动shell脚本的命令来启动程序: CMD[“sh”、“-c”、“app/bin/app start;bash”] 为了启动它,因为出于某种原因,当我在后台运行应用程序(elixir/phoenix应用程序)时,它会立即崩溃,但如果我在前台运行它,它就可以了。如果我在本地以这种方式运行它,一切正常,但当我尝试在集群中运行它时,它会关闭。请帮忙 Docker应该跟踪正在运行的前台进程,如果进程停止,则容器停止。当您使用带有“bas

我正在尝试在amazon ECS上运行Docker映像。我正在使用启动shell脚本的命令来启动程序:
CMD[“sh”、“-c”、“app/bin/app start;bash”]

为了启动它,因为出于某种原因,当我在后台运行应用程序(elixir/phoenix应用程序)时,它会立即崩溃,但如果我在前台运行它,它就可以了。如果我在本地以这种方式运行它,一切正常,但当我尝试在集群中运行它时,它会关闭。请帮忙

Docker应该跟踪正在运行的前台进程,如果进程停止,则容器停止。当您使用带有“bash”的命令时,容器工作的原因是bash没有停止


我猜您可以使用she-ll脚本启动一个在后台服务的应用程序,比如nginx或守护进程。因此,尝试找到一个选项,使应用程序运行前台将保持你的容器活着。也就是说,nginx在启动“守护进程关闭”时有一个选项,Docker应该跟踪正在运行的前台进程,如果进程停止,容器停止。当您使用带有“bash”的命令时,容器工作的原因是bash没有停止

我猜您可以使用she-ll脚本启动一个在后台服务的应用程序,比如nginx或守护进程。因此,尝试找到一个选项,使应用程序运行前台将保持你的容器活着。即nginx在启动“守护进程关闭”时有一个选项

由于某种原因,当我在后台运行应用程序(elixir/phoenix应用程序)时,它立即崩溃

因此,您有一个已损坏的应用程序,您正在寻找一个使它看起来像是某种工作的混乱。这根本不是一个可靠的方法

相反,你应该:

  • 让它在后台工作
  • 使用
    systemctl
    upstart
    在崩溃时管理Erlang VM的重启
请注意,在哪里编译应用程序很重要。它必须与生产版本完全相同的体系结构/容器,具有相同的Erlang、Elixir和OS版本,否则没有人保证它将是健壮的,甚至可以工作

由于某种原因,当我在后台运行应用程序(elixir/phoenix应用程序)时,它立即崩溃

因此,您有一个已损坏的应用程序,您正在寻找一个使它看起来像是某种工作的混乱。这根本不是一个可靠的方法

相反,你应该:

  • 让它在后台工作
  • 使用
    systemctl
    upstart
    在崩溃时管理Erlang VM的重启

请注意,在哪里编译应用程序很重要。它必须与生产版本完全相同的体系结构/容器,具有相同的Erlang、Elixir、OS版本,否则没有人保证它是健壮的,甚至可以正常工作。

在开发环境的终端窗口中,如果运行
app start
,是否会立即返回shell提示符,或者服务器运行直到您使用control-C停止它吗?通常,
start
用于在后台启动某些内容。脚本是否提供了不同的子命令(如
run
),以使进程保持在前台?当我使用start-using“docker run-d app”在终端中运行应用程序发行版时,它会立即崩溃,使我没有可恢复的日志或任何正在运行的容器。如果我运行上面相同的命令,Dockerfile中的CMD为“sh”、“-c”、“app/bin/app start”;bash“如果Dockerfile中的CMD只是app/bin/app startSo sh-c,它就可以工作,但是如果我试图在开发环境中的终端窗口中运行它,它就会崩溃。如果你运行
app start
,你会立即得到shell提示吗,或者服务器运行直到您使用control-C停止它吗?通常,
start
用于在后台启动某些内容。脚本是否提供了不同的子命令(如
run
),以使进程保持在前台?当我使用start-using“docker run-d app”在终端中运行应用程序发行版时,它会立即崩溃,使我没有可恢复的日志或任何正在运行的容器。如果我运行上面相同的命令,Dockerfile中的CMD为“sh”、“-c”、“app/bin/app start”;bash“如果Dockerfile中的CMD只是app/bin/app startSo sh-c,它就可以工作,但是如果我尝试在ECS中运行它,它就会崩溃。有趣的是,当我在容器外部的后台本地运行生产应用程序时,它工作得很好。只有当我尝试在docket容器中运行后台进程时,我遇到了问题,并求助于shell脚本。要在docker中运行它,必须在同一个docker中编译它。有趣的是,当我在容器外部的后台本地运行生产应用程序时,它工作得很好。只有当我试图在docket容器中运行后台进程时,我遇到了问题,并求助于shell脚本。要在docker中运行它,必须在同一个docker中编译它。