Heroku:用Dockerfile CMD失败部署minio服务器

我正在尝试将我的迷你服务器部署到heroku。 这是我的Dockerfile:

FROM minio/minio ENV MINIO_ACCESS_KEY="xxxxxx" ENV MINIO_SECRET_KEY="xxxxxxxx" CMD ["server", "/data"] EXPOSE 9000 

当我通过docker生成和运行时, 这在本地工作 (使用这些命令:)

 docker build . -t testheroku sudo docker run -p 8080:8080 testheroku 

Dockerfile是目录中唯一的文件。

然后,我试着把它推到heroku。 我遵循heroku docker指令页上的命令来安装heroku容器插件,login等等。然后,我推送了我的应用: heroku container:push web --app APP_NAME

当我访问该应用程序时,浏览器中出现应用程序错误。 这就是heroku日志显示的内容:

 2017-09-21T02:24:47.589576+00:00 app[api]: Deployed web (26b84915ed48) by user [] 2017-09-21T02:24:47.589576+00:00 app[api]: Release v28 created by user [] 2017-09-21T02:24:48.241050+00:00 heroku[web.1]: State changed from crashed to starting 2017-09-21T02:24:49.480733+00:00 heroku[web.1]: Starting process with command `server /data` 2017-09-21T02:24:51.961825+00:00 app[web.1]: 'server /data' is not a minio sub-command. See 'minio --help'. 2017-09-21T02:24:52.056706+00:00 heroku[web.1]: Process exited with status 1 2017-09-21T02:24:52.064400+00:00 heroku[web.1]: State changed from starting to crashed 2017-09-21T02:24:52.938136+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=APP_NAME.herokuapp.com request_id=80ddd6f8-c053-4ff6-b4c9-fdb0ce8a48a5 fwd="67.245.14.153" dyno= connect= service= status=503 bytes= protocol=https 2017-09-21T02:24:54.319660+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=APP_NAME.herokuapp.com request_id=9988b6af-8a91-4e77-9bd4-c79c9e2ec24c fwd="67.245.14.153" dyno= connect= service= status=503 bytes= protocol=https 

对于那些不熟悉minio的人来说, 'server /data' is not a minio sub-command. See 'minio --help'.一些解释'server /data' is not a minio sub-command. See 'minio --help'. 'server /data' is not a minio sub-command. See 'minio --help'. :这显示了当你运行的minio命令的参数不是一个minio命令。 例如,

 ./minio sadf 'sadf' is not a minio sub-command. See 'minio --help'. 

所以,heroku告诉我的是,它正在解释我的Dockerfile中的CMD行,而不是它应该的(它是以minio子命令和/data作为参数的服务器),但是如果您注意到引号,那么heroku会被粉碎这两个部分在一起,并试图使用整个string作为minio子命令 – 因此错误消息。 它试图运行命令minio 'server /data'而不是minio server /data

有没有人看过这种从Heroku之前用Dockerfile的行为? 我怎样才能确保CMD行得到正确的解释,而不是一个完整的string? 我认为这是一个英雄问题,因为它在当地运行良好。 任何的build议都受欢迎。

我有一个类似的问题,似乎是由父层中的其他入口点引起的。 为了解决这个问题,我在我的CMD上面添加了ENTRYPOINT [] ,并且一切正常。