2017-09-21 2 views
1

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.

+0

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 –

Répondre

1

J'ai eu un problème similaire qui semblait provoqué par avoir d'autres ENTRYPOINTS dans les couches parentes. Pour résoudre ce problème, j'ai ajouté ENTRYPOINT [] au-dessus de mon CMD et tout a bien fonctionné.