Dockerfile – budowanie obrazu

Składnia – gdy jest już gotowy Dockerfile

# docker build [OPCJE] <ŚCIEŻKA lub ADRES URL> | -

- ścieżka lub URL - określa kontekst, położenie plików 
- COPY, ADD, ... szukają plików w kontekście budowania
- ścieżka określa wszystkie podkatalogi,
- . (kropka) bieżący katalog z plikiem Dockerfile
- URL - repozytorium git z wszystkimi podmodułami
- cały kontekst jest wysyłany do demona budowania


# docker build -help

# docker build .

# docker build -t john/myapp .                 - oznaczenie obrazu, tag (-t)

# docker build -f /var/my_files/Dockerfile .    - położenie Dockerfile poza aktualnym katalogiem

.dockerignore – wyklucza pliki, katalogi (tymczasowe, logi) z procesu budowania

# cat .dockerignore   - powinien znajdować się w kontekście (np. katalogu lokalnym z którego budujemy obraz)

 */tmp*              - pliki tmp w podkatalogach 1-go poziomu
 */*/tmp*            - tmp w podkatalogach 2-go poziomu
 **/*.log            - logi w podkatalogach dowolnie głęboko zapisanych (**)
 tmp?                - tmp z dowolnym znakiem (?) w katalogu głównym kontekstu
!important.log       - wyłączenie z ignorowania (!) - wykluczenia powinny być na końcu

Zalecenia:

1. Rozpoczęcie od pustego kontekstu budowania
2. Dodanie tylko tego co niezbędne
3. Użycie pliku .dockerignore
4. Zasada "Nie będziesz tego potrzebował" 
5. Minimalna liczba warstw (instrukcji Dockerfile) - połączyć te same instrukcje w jedną
6. Jeśli jedna usługa zależy od innej powinny działać w różnych, połączonych ze sobą kontenerach
# docker images      - sprawdzenie