2017-10-24 92 views
5

Obecnie mam lokalnie przetestowaną i działającą aplikację internetową, która składa się z 4 kontenerów doków: Java MVC, NodeJS, Flask i MongoDB. Mam 4 pliki Docker, po jednym dla każdego i zarządzam kompilacjami za pomocą docker-compose.yml.Jak popychać pojemniki Docker zarządzane przez Docker-komponować do Heroku?

Jednak teraz chcę przekazać mój kod do Heroku i czytać dokumentację pod numerem https://devcenter.heroku.com/articles/container-registry-and-runtime. Wydaje się jednak bardzo mało prawdopodobne, jak korzystać z funkcji dokowania na linii produkcyjnej. To jest to, co mówi na dokumentach:

"Jeśli stworzyłeś aplikację z wieloma kontenerami, możesz użyć komponentu Docker Compose, aby zdefiniować środowisko programistyczne lokalne. Dowiedz się, jak używać komponentu Docker Compose do lokalnego rozwoju."

Czy każdy może mnie poprowadzić do rzeczywistego kodu, w jaki sposób mogę przekazać mój projekt do pojemnika Heroku za pomocą interfejsu CLI Heroku?

+0

Czy utworzyłeś plik docker-compose.yml? Jeśli masz plik Dockerfile, aby utworzyć obrazy doków do aplikacji i portów, które chcesz eksponować, i woluminów, które chcesz zamontować. możemy utworzyć docker-compose.yml –

+0

Jeśli twoje aplikacje są zależne od siebie, możemy stworzyć kompozycję dla wszystkich, w przeciwnym razie musisz utworzyć indywidualne pliki docker-compose.yml. –

+0

@JinnaBalu Mam już docker-compose.yml. Jednak szukam sposobu, aby w końcu przekazać mój kod do Heroku, ponieważ dokumenty są bardzo niejednoznaczne. – AspiringMat

Odpowiedz

0

Im bardziej dokładna dokumentacja Heroku dla czego szukasz zrobić to tutaj: https://devcenter.heroku.com/articles/container-registry-and-runtime

Powyższy przeprowadzi Cię przez proces konfigurowania wtyczki pojemnik Heroku i zalogowaniu do rejestru. Można nawet przenieść obraz do Dockerfile z poniższej linii w swojej dockerfile:

FROM "<insert Dockerfile tag here>" 

Aby łatwo skonfigurować to, można wymienić swoje Dockerfiles z różnych przyrostków, takich jak Dockerfile.mongo, Dockerfile.node, Dockerfile .flask i Dockerfile.javamvc. Przyrostek mówi heroku o nazwie dyno używanej w twojej aplikacji internetowej. Kiedy trzeba naciskać wszystkich pojemników, można to zrobić za pomocą następującego polecenia, które będą budować rekursywnie wszystkie dockerfiles tak długo, jak wszystkie z nich posiadają unikalne przyrostków:

heroku container:push --recursive 

Jak Heroku nie czyta docker- Komponuj pliki, każda konfiguracja środowiska/ekspozycja portu/etc będą musiały zostać przeniesione do pliku Docker. Ponieważ nie mogę znaleźć sposobu na trwałe gromadzenie danych/objętości za pomocą kontenerów na Heroku, polecam użycie dodatku Heroku do swojej bazy danych mongo.

Na Heroku zobaczysz, że twoja aplikacja działa jako jedna dyna na Dockerfile, a każda nazwa dyna jest przyrostkiem każdego pliku Dockerfile.