2016-06-03 12 views
5

Moja aplikacja jest zbudowana na Play Framework (2.5.3) za pomocą Scala. Aby wdrożyć aplikację, utworzę obraz dokowany za pomocą komendy sbt docker:publishLocal. Próbuję dowiedzieć się, gdzie podstawowy plik obrazu docker jest w strukturze folderu gry. Widzę DockerFile w folderze target/docker. Nie wiem, jak program Play Framework tworzy ten plik DockerFile i gdzie/jak program Play Framework mówi dockerowi, aby warstwa aplikacji była umieszczona na obrazie podstawowym. Jestem scala/play/docker n00b. Proszę pomóż.Gdzie jest podstawowy obraz dokowania określony w Play Framework?

+0

W tytule Pytasz o obrazie Döcker, aw treści - o pliku Döcker i „podstawy obraz dokowania ". W końcu, czego szukasz. I: dlaczego tego potrzebujesz? – michaJlS

+0

Obraz Docker jest generowany przez wtyczkę o nazwie sbt-native-packager, a nie przez samą strukturę Play. Może ich dokumenty mogą ci pomóc https://github.com/sbt/sbt-native-packager, https://github.com/marcuslonnberg/sbt-docker i http://www.scala-sbt.org/sbt -natywny-packager/formats/docker.html. – Kris

+0

@michaJlS Szukam szczegółów na temat podstawowego obrazu dokowanego, z którego korzysta framework. Jeśli chodzi o twoje pytanie, dlaczego go potrzebuję - 1. Lubię wiedzieć, gdzie to jest 2. Chciałbym wiedzieć, w jaki sposób mogę dodać do niego kolejną warstwę, jeśli zajdzie taka potrzeba. – darthjit

Odpowiedz

2

Nie ma określony plik Docker, to wygenerowane przez wtyczkę z predefiniowanych ustawień domyślnych, które można zastąpić

http://www.scala-sbt.org/sbt-native-packager/formats/docker.html

Można spojrzeć na docker.DockerPlugin, aby uzyskać lepszy pomysł domyślnych używany.

Można również spojrzeć na DockerKeys dodatkowych zadań, jak

doker wygenerować-config

+0

Czy myślisz, że w tym momencie powinniśmy połączyć wszystkie trzy odpowiedzi? Każdy z nas ma coś do wniesienia do stołu, który pomaga odpowiedzieć na jeden aspekt pytania. – Jouster500

1

Dokumentacja tutaj: http://www.scala-sbt.org/sbt-native-packager/formats/docker.html wskazuje, że obraz bazowy jest dockerfile/java, które nie wydają się być w piaście Döcker ale szczegóły na obrazie są na github: https://github.com/dockerfile/java

Dokumentacja wskazuje również, że można podać własna baza obrazu za pomocą ustawień lub utworzenie własnego dockerfile http://www.scala-sbt.org/sbt-native-packager/formats/docker.html#custom-dockerfile

jest również wskazane, jakie są wymagania przy użyciu własnego wizerunku na bazie „dockerBaseImage” środowisko:

Obraz używany jako baza do uruchamiania aplikacji. Powinien zawierać binarki na ścieżce dla chown, mkdir, mieć binarny plik binarny, który można wykryć, i zawierać użytkownika skonfigurowanego przez daemonUser (domyślnie demon).

2

Oto kilka definicji, dzięki którym można zorientować się, o czym mówię.

  • dokowane pojemniki są przechowywane aplikacje lub usługi, które zostały skonfigurowane i zapisane tak, że doker można uruchomić na dowolnym dokowanym maszynowego jest zainstalowany.
  • Obrazy dokowane to stany kontenerów dokowanych, które służą do uruchamiania nowych kontenerów.
  • Dockerfiles to pliki zawierające instrukcje kompilacji dotyczące budowania obrazu dokowanego. Ma to na celu odciążenie niektórych z wielu dodatkowych parametrów, które trzeba dołączyć, aby uruchomić kontener w taki sposób, w jaki chce.

@michaJlS Poszukuję szczegółów na temat podstawowego obrazu dokowanego, z którego korzysta framework. Jeśli chodzi o twoje pytanie, dlaczego go potrzebuję - 1. Lubię wiedzieć, gdzie to jest 2. Chciałbym wiedzieć, w jaki sposób mogę dodać do niego kolejną warstwę, jeśli zajdzie taka potrzeba.

1.) To będzie oparte na tym, czego chcesz szukać. Jeśli szukasz gotowego obrazu do dokowania, po prostu wykonaj docker images i znajdź obraz sugerujący, z czego korzystasz. Jeśli szukasz danych raw, możesz to znaleźć w /var/lib/docker/graph. Jest to jednak bezcelowe, ponieważ potrzebujesz identyfikatora obrazu, który można określić tylko za pomocą polecenia docker images, podanego powyżej. Jeśli obraz nie został prawidłowo zbudowany, obraz nie pojawi się.

2.) Jeśli chcesz zmodyfikować lub dołączyć dodatkową warstwę (która poprzez dodanie warstw oznacza dodanie nowych plików i modułów do aplikacji), musisz uruchomić obraz dokowania (via the docker run command). Ponownie jest to dyskusyjne, jeśli obraz dokowanego nie może zostać odnaleziony przez demona docker.

Chociaż powinno to odpowiedzieć na twoje pytanie, nie wierzę, że to było to, o co prosiłeś.Osoby zajmujące się dokowaniem to osoby, które chcą umieścić aplikacje w kontenerach, które można uruchomić na dowolnej platformie, unikając problemów z zależnościami, zachowując względną wygodę:. Jeśli próbujesz użyć okna dokowanego do umieszczenia nowo utworzonej aplikacji, będziesz chciał build from a dockerfile.

W skrócie, pliki dokowane to instrukcje kompilacji, które normalnie powinieneś określić przed uruchomieniem kontenera lub w jego środku. Jeśli stwierdzasz, że polecenie sbt docker utworzyło plik dokowanego, konieczne będzie wyszukanie tego pliku i użycie polecenia docker build w celu utworzenia instancji obrazu (informacje powinny być podane w tym drugim łączu). Najlepszym sposobem działania, aby spróbować uruchomić aplikację na kontenerze, jest albo zbudowanie go wewnątrz kontenera, który ma środowisko uruchomionej aplikacji, albo po prostu zbudowanie go z pliku dockerfile.

Pierwsza opcja to po prostu być docker run -ti imagename z obrazem będącym środowiskiem urządzenia, na którym działa uruchomiona aplikacja. Możesz znaleźć kilka zdjęć na docker hub and one that may be of interest to you is this play-framework image someone else created. To polecenie przeniesie Cię do interaktywnej sesji z kontenerem, dzięki czemu możesz pracować tak, jakbyś próbował stworzyć aplikację w swoim własnym środowisku. Po prostu nie zapomnij użyć docker commit kiedy skończysz budować!

Szybszą metodą budowania obrazu byłoby zrobienie tego z pliku docker. Jeśli znasz wszystkie polecenia i masz wszystkie zależności potrzebne do utworzenia i uruchomienia aplikacji, po prostu umieść je w pliku o nazwie "Dockerfile" (postępując zgodnie z instrukcjami i wskazówkami łącza 2) i wykonaj docker build -t NewImageName /path/to/Dockerfile. Spowoduje to utworzenie obrazu, który można wykorzystać do utworzenia kontenerów tego obrazu lub rozpowszechnienia go według własnego uznania.