Potrzebuję uruchomić aplikację Golang na maszynie Docker.Golang Mac OSX kompilacja dla maszyny Docker
Pracuję na Mac OSX, a Docker pracuje nad maszyną wirtualną Linuksa, więc pliki binarne zbudowane na Macach nie działają na Dockerze.
Widzę dwa sposoby tutaj:
- cross-kompilacji binaria na Mac dla systemu Linux OS
- źródła projektu kopia do Docker uruchom 'idź' i 'iść build' na nim
Pierwsza jest trudna z powodu CGO (jest używana w niektórych bibliotekach importowanych).
Drugi jest bardzo wolny ze względu na operację "idź".
Czy możesz mi powiedzieć, która droga jest najczęstsza w tej sytuacji? A może robię coś nie tak?
Docker buforuje warstwy obrazu i umożliwia rozpoczęcie od określonego obrazu. Rozdziel komendy w pliku Dockerfile, aby móc ponownie użyć jak największej liczby warstw, a zmiany w źródle wymagają tylko utworzenia własnego pakietu. – JimB
JimB, ale jak mogę zepsuć komendę "idź"? RUN go get pakiet1/n RUN go get pakiet2 ... itd. I będą one buforowane? –
Don 'use 'go get', lub przynajmniej utwórz z niego podstawowy obraz i zacznij od tego (' go get' nie powinno być używane w produkcji, więc większość ludzi ma inną metodę zarządzania zależnościami). Podstawowym rozwiązaniem w jednym pliku Dockerfile jest utworzenie pliku Makefile lub skryptu do zainstalowania wszystkich depów zgodnie z wymaganiami, które można umieścić w pojedynczej instrukcji RUN. – JimB