1

我正在尝试将我的 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 容器插件、登录等。然后,我推送了我的应用程序: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’.: 这显示了当您使用不是 minio 命令的参数运行 minio 命令时。例如,

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

因此,heroku 告诉我的是,它正在解释我的 Dockerfile 中的 CMD 行,而不是它应该的(server作为 minio 子命令和/data它的参数),而是,如果你注意到引号,heroku 正在粉碎这两部分一起并尝试将整个字符串用作 minio 子命令 - 因此出现错误消息。它试图运行命令minio 'server /data'而不是minio server /data

有没有人在使用 Dockerfile 之前从 heroku 看到过这种行为?如何确保 CMD 行被正确解释,而不是一个完整的字符串?我认为这是一个heroku问题,因为它在本地运行良好。任何的建议都受欢迎。

4

2 回答 2

2

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

于 2017-11-15T04:45:41.950 回答
0

实际上,我有同样的问题。这个 Dockerfile 工作正常。

FROM minio/minio:RELEASE.2022-01-08T03-11-54Z.fips

ENV MINIO_ROOT_USER=XXXXXX
ENV MINIO_ROOT_PASSWORD=XXXXXX

EXPOSE 9000
EXPOSE 9001

ENTRYPOINT ["minio"]
CMD ["server","/data","--console-address",":9001"]
于 2022-01-18T11:27:42.230 回答