我在ECS上运行了两个容器。一个容器是一个应用程序,它通过docker卷将配置文件共享到第二个容器,该容器是Sumologic文件收集器,它是一个通用的日志记录容器。
我遇到的问题是每隔一段时间记录容器就会出现错误Cannot find file /path/to/logging/file.json
。这种情况发生的唯一原因是如果卷是空的,那么app容器没有按时将配置文件放入卷中。
在第二个容器尝试读取文件之前,如何让应用程序容器将文件放入卷中?
截至2019年3月,有一个新的ECS功能可以解决这个问题。目标是确保日志容器在应用程序容器启动之前不会启动(这意味着应用程序容器已成功将其文件装入卷中)。
这样做的方法是在任务定义中使用dependsOn。例如如果你想在容器foo启动后才启动容器,你可以这样做
"dependsOn": [
{
"containerName": "foo",
"condition": "START"
}
]
进一步阅读: