Dockerfile na pomoc

Skaut nie jest jeszcze bardzo skomplikowany. Ale przewiduję dla niego szybką i łatwą deployowalność – uruchomienie wszędzie za pomocą dockerowego silnika. Tu przychodzi na pomoc docker i jego plik definicji obrazu – Dockerfile.

Gol czyli cel

Przewiduję następujące części składowe prostego systemu notyfikacji zmian:

  • baza na mongo
  • silnik który chodzi w tle
  • webowy interfejs dla definicji „misji” skauta

Definicja

Dla tego celu mogę przygotować obraz który niech wygląda np. tak

Na razie nie ma tu mowy o mongo ale co tu widzimy?
Każdy obraz zaczynamy definiować od rodzica, obraz musi powstać od FROM obrazu który już kiedyś istniał. W tym wypadku za wzorowy uznaję obraz który ma już Miniconda, apkę dedykowaną dla łatwej instalacji zaawansowanych elementów Pythona dla scikit naukowych rozszerzeń. MAINTAINER to samochwała – piszesz kto ten kod utrzymuje, kto jest odpowiedzialny. Następnie na obrazie wykonujemy serię operacji które zbudują nam ten obraz RUN, każda komenda odpala obraz, wykonuje na nim operację i „przekazuje” ten obraz tymczasowy dla kolejnej operacji. WORKDIR ustala gdzie się przenosimy w obrazie, do którego katalogu wędrujemy. Następnie tam uruchamiamy instalację wszystkiego tak jak trzeba poprzez conda. ENTRYPOINT to domyślna operacja która będzie ustalana po uruchomieniu obrazu. Na koniec wystawiamy port via EXPOSE.

Uruchamianie

Gdy zbudujesz ten obraz jako luk/scout

to dla uruchomienia tego obrazu wystarczy wyklikać

Powinna odpalić się aplikacja webowa, która w niedalekiej przyszłości zaserwuje skautowe funkcjonalności.