【问题标题】:How do I get a Command to run from a Dockerfile.aws.json on Elastic Beanstalk?如何获取命令以从 Elastic Beanstalk 上的 Dockerfile.aws.json 运行?
【发布时间】:2020-10-30 06:18:57
【问题描述】:

我有一个Dockerfile 和一个Dockerfile.aws.json

{
    "AWSEBDockerrunVersion": "1",
    "Ports": [{
        "ContainerPort": "5000",
        "HostPort": "5000"
    }],
    "Volumes": [{
        "HostDirectory": "/tmp/download/models",
        "ContainerDirectory": "/models"
    }],
    "Logging": "/var/log/nginx",
    "Command": "mkdir -p /tmp && axel https://example.com/models.zip -o /tmp/models.zip"
}

但是当我部署时,它没有运行我指定的Command。我做错了什么?

【问题讨论】:

    标签: docker dockerfile amazon-elastic-beanstalk


    【解决方案1】:

    如果您的 Dockerfile 中有 ENTRYPOINT,则 Command 将作为其 arguments 附加:

    指定要在容器中执行的命令。如果您指定一个入口点,那么命令将作为入口点的参数添加。有关详细信息,请参阅 Docker 文档中的 CMD。

    因此,您的命令mkdir -p /tmp ... 将用作python3 -m flask run --host=0.0.0.0 的参数,从而导致错误。这可以解释您遇到问题的原因。

    我最初尝试使用您的 Command 结构重新创建问题,但遇到了一些问题。有效的是通过以下方式使用Command

    "Command": "/bin/bash -c \"mkdir -p /tmp && axel https://example.com/models.zip -o /tmp/models.zip\""
    

    我的Dockerfile 没有Entrypoint。因此,要运行您的 python,您可以执行以下操作(假设其他所有内容都正确):

    "Command": "/bin/bash -c \"mkdir -p /tmp && axel https://example.com/models.zip -o /tmp/models.zip && python3 -m flask run --host=0.0.0.0\""
    

    【讨论】:

      【解决方案2】:

      你有 Dockerfile 内容吗? 很可能他们的ENTRYPOINT 脚本没有接收到参数,或者忽略了它。

      你可以做的类似于this

      你有一个入口点脚本,它接收作为参数传入 aws.json 的命令,执行它,然后调用你真正的 python 命令。

      或者你可以用类似这样的东西替换你的ENTRYPOINT

      ENTRYPOINT ["/bin/bash"]

      你的默认命令是:

      CMD ["python3 ..."]

      这样在本地运行时只运行python3命令。

      如 Marcin 所述,在 aws 中运行时,您可以更改命令并将 python 附加到末尾。两种情况都有效

      【讨论】:

      • 在我的Dockerfile 中,我有:ENTRYPOINT python3 -m flask run --host=0.0.0.0
      • 但我想在 ENTRYPOINT 之前运行 Command
      • 我编辑了我的答案。基本上你可以覆盖入口点来执行之前的命令。
      • 那么在我的Dockerfile 中,我应该将我的ENTRYPOINT 更改为某个shell 脚本,然后在我的Dockerfile.aws.json 中,我应该有"Command": "--deploy"
      猜你喜欢
      • 1970-01-01
      • 2018-04-16
      • 2015-04-10
      • 2019-01-18
      • 2019-04-23
      • 2018-05-23
      • 2021-04-20
      • 2014-03-04
      • 2015-04-17
      相关资源
      最近更新 更多