J'essaye de déployer mon serveur minio à heroku. Ceci est mon Dockerfile:Heroku: déploiement du serveur minio avec l'échec Dockerfile CMD
FROM minio/minio
ENV MINIO_ACCESS_KEY="xxxxxx"
ENV MINIO_SECRET_KEY="xxxxxxxx"
CMD ["server", "/data"]
EXPOSE 9000
Cela fonctionne localement quand je construis et l'exécuter à travers docker (à l'aide de ces commandes :)
docker build . -t testheroku
sudo docker run -p 8080:8080 testheroku
Le Dockerfile est le seul fichier dans le répertoire.
Ensuite, j'essaie de le pousser à heroku. J'ai suivi les commandes sur le heroku docker instruction page pour installer le plugin heroku container, login, etc Ensuite, j'ai poussé mon application avec: heroku container:push web --app APP_NAME
Lorsque je visite l'application, je reçois une erreur d'application dans le navigateur. C'est ce que l'affichage se connecte 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
Pour ceux qui ne connaissent minio, une explication de ‘server /data’ is not a minio sub-command. See ‘minio --help’.
: cela montre lorsque vous exécutez la commande minio avec un argument qui n'est pas une commande minio. Par exemple,
./minio sadf
‘sadf’ is not a minio sub-command. See ‘minio --help’.
Alors qu'est-ce heroku me dit est qu'il est l'interprétation de la ligne CMD de mon Dockerfile, et non pas comme il se doit (ce qui est avec server
comme la sous minio et /data
comme argument), mais au contraire, si vous remarquez les guillemets, heroku écrase les deux morceaux ensemble et tente d'utiliser toute la chaîne comme une sous-commande minio - d'où le message d'erreur. Il essaie d'exécuter la commande minio 'server /data'
au lieu de minio server /data
Est-ce que quelqu'un a déjà vu ce genre de comportement de la part de heroku avec un Dockerfile? Comment puis-je m'assurer que la ligne CMD est interprétée correctement, et non comme une chaîne complète? Je suppose que c'est un problème d'heroku parce que ça fonctionne bien localement. N'importe quel conseil est le bienvenu.
Poussez une image simple et essayez de tester différents CMD sur une image alpine de base et voir si c'est vraiment le cas –