Docker 名称具有ECS任务ID的Sidekiq工作进程

Docker 名称具有ECS任务ID的Sidekiq工作进程,docker,sidekiq,amazon-ecs,Docker,Sidekiq,Amazon Ecs,我们在应用程序中使用ECS,但WebUI中的进程会得到一些无用的名称,如66ef25674344。我更喜欢以运行的ECS任务ID命名。我自己想出来的。Sidekiq使用DYNO环境变量(可能是Heroku变量)或运行它的服务器的主机名作为进程名(请参阅)。在Docker中,主机名默认设置为容器ID,这实际上并不反映我们在ECS UI中看到的任何内容 如果我们在进程开始之前设置DYNOenvvar,它将被用作进程名称。这仍然可以在config/initializers/sidekiq.rb中完成,

我们在应用程序中使用ECS,但WebUI中的进程会得到一些无用的名称,如
66ef25674344
。我更喜欢以运行的ECS任务ID命名。

我自己想出来的。Sidekiq使用
DYNO
环境变量(可能是Heroku变量)或运行它的服务器的主机名作为进程名(请参阅)。在Docker中,主机名默认设置为容器ID,这实际上并不反映我们在ECS UI中看到的任何内容

如果我们在进程开始之前设置
DYNO
envvar,它将被用作进程名称。这仍然可以在
config/initializers/sidekiq.rb
中完成,因此我们不需要在shell脚本中解析JSON:

if ENV.key?("ECS_CONTAINER_METADATA_FILE")
  ENV["DYNO"] = JSON.parse(
    File.read(ENV["ECS_CONTAINER_METADATA_FILE"])
  )["TaskARN"].split("/").last
end

请注意,
ECS\u CONTAINER\u METADATA\u文件
envvar及其引用的文件在默认情况下处于禁用状态

我自己想出来的。Sidekiq使用
DYNO
环境变量(可能是Heroku变量)或运行它的服务器的主机名作为进程名(请参阅)。在Docker中,主机名默认设置为容器ID,这实际上并不反映我们在ECS UI中看到的任何内容

如果我们在进程开始之前设置
DYNO
envvar,它将被用作进程名称。这仍然可以在
config/initializers/sidekiq.rb
中完成,因此我们不需要在shell脚本中解析JSON:

if ENV.key?("ECS_CONTAINER_METADATA_FILE")
  ENV["DYNO"] = JSON.parse(
    File.read(ENV["ECS_CONTAINER_METADATA_FILE"])
  )["TaskARN"].split("/").last
end
请注意,
ECS\u CONTAINER\u METADATA\u文件
envvar及其引用的文件在默认情况下处于禁用状态