Pracuję nad agentem Pythona, który chcę biec naturalnie w różnych środowiskach (zasadniczo różne obrazy dokująca, ale niekoniecznie). Ale naprawdę nie mam pojęcia, jak działa w tym obszarze niskiego poziomu.

Sporządziłem projekt za pomocą Pyinstaller i działa z powodzeniem na mojej maszynie. Na dokumentach napisano, że powinienem skompilować projekt na maszynie, chcę go uruchomić, ale chcę przygotować różne wersje dla pliku wykonywalnego, więc będzie w stanie uruchomić je z wyprzedzeniem, ale nie don "Twów, jakie są kryteria, które muszę wziąć pod uwagę.

Jeśli chcę uruchomić agenta na różnych obrazach dokerowych, jakie są specyfikacje, na które muszę zwrócić uwagę? Architektura? OS? Wersja GCC? Obraz podstawowy?

Jaki jest najlepszy sposób na skompilowanie jak najwięcej binarnych, aby obsługiwać różne obrazy dokującego?

Jeśli skompilowałem projekt na obrazie alpejskiego, na przykład, czy to oznacza, że uruchomi się na wszystkich obrazach dokujących na podstawie alpejskiego?

Wszelkie porady są mile widziane.

Dzięki!

0
Gal Shahar 15 kwiecień 2021, 15:24

1 odpowiedź

Najlepsza odpowiedź

Jeśli masz skrypt Pythona, ten skrypt na własną rękę jest (prawdopodobnie) przenośny, i może działać w dowolnym systemie w dowolnym opiniacji operacyjnej na dowolnej architekta, która ma tłumacz Pythona. To nie jest trudny wymóg - zarówno systemy Linux, jak i MacOS zazwyczaj pochodzą z Pythona preinstalowany - a jeśli przenośność jest dla Ciebie ważna, staram się pozostać tak blisko środowiska Pure-Python, jak możesz.

Po przyniesieniu pyinstaller na zdjęcie, stworzyłeś nieoporalizowany artefakt binarny. Musisz ponownie uruchomić pyinstaller na każdym innym systemie operacyjnym i każdej innej architektury, którą chcesz uruchomić na (Linux / X86, Linux / ARM, MacOS / X86, MacOS / Ramię, Windows / X86 i prawdopodobnie oddzielne MUSL [Alpine ] Vs. Glibc [Debian] Buduje na Linuksie). Nie ma tak naprawdę żadnych skrótów.

W zasadzie Docker wygląda na to, że może uprościć to poprzez uruchomienie wszystkiego pod Linuksa. Nadal musisz tworzyć oddzielne artefakty x86 i ramienia. Gdy zostanie osadzony na obrazku Docker, nie musisz tworzyć oddzielnych opłat dla różnych dystrybucji Linuksa, wystarczy uruchomić wstępnie skompilowany obraz. Jednak gospodarz musiałby mieć zainstalowany dokownika (który prawie na pewno nie domyślnie nie będzie), i w zależności od tego, co dokładnie twój agent jest raportowany, może być utrudniony przez bieganie w izolowanym środowisku (w Linux VM na non -Linux hosts).

1
David Maze 15 kwiecień 2021, 14:35