Istnieją dwie części związane z tym pytanie:
- Running chromu (co elektron, co z kolei, nightmare "używa") headlessly w systemie Linux.
- Zainstaluj/użyj xvfb, aby uruchomić chromium na silniku aplikacji.
Part 1)
Trzeba Xvfb.
Xvfb (Virtual Framebuffer) to program, który z wiki: "jest serwerem wyświetlania implementującym protokół serwera wyświetlania X11. W przeciwieństwie do innych serwerów wyświetlania, Xvfb wykonuje wszystkie operacje graficzne w pamięci bez pokazywania jakiegokolwiek wyjścia ekranu. "
To jest to, czego potrzebujesz, aby uruchomić przeglądarkę bez ekranu wyjściowego.
Najpierw zainstaluj wszystkie pakiety związane z Xvfb, aby uruchomić go na Linuksie.
apt-get install -y \ xvfb \ x11-xkb-utils \ xfonts-100dpi \ xfonts-75dpi \ xfonts-scalable \ xfonts-cyrillic \ x11-apps \ clang \ libdbus-1-dev \ libgtk2.0-dev \ libnotify-dev \ libgnome-keyring-dev \ libgconf2-dev \ libasound2-dev \ libcap-dev \ libcups2-dev \ libxtst-dev \ libxss1 \ libnss3-dev \ gcc-multilib \ g++-multilib
Więc z zainstalowanym Xvfb trzeba stworzyć ekran wirtualny Xvfb i wyeksportować zmienną środowiskową o nazwie wyświetlacz, który wskazuje na to. Chrom w Electron automatycznie wyszukuje $ DISPLAY.
Powyższe można zrobić łatwiej. Oto dwie opcje:
Od tego momentu ciebie powinien być w stanie uruchomić na Linuksie koszmar.
część 2)
Nodejs na app silnika jest prowadzony za pośrednictwem elastycznego środowiska. Znaczenie, poprzez pojemniki dokowane.
Z środowiska wykonawczego GAE nodejs: "Jeśli twoja aplikacja wymaga dodatkowych zależności na poziomie systemu operacyjnego, będziesz musiał użyć niestandardowego środowiska wykonawczego na podstawie tego środowiska wykonawczego, aby zainstalować odpowiednie pakiety."
Docker jest zupełnie osobny temat, ale w tym celu wyżej z app silnika masz dwie opcje o ile wiem:
Extending the runtime
Używaj GAE z custom runtime od zadraśnięcie.
Tak czy inaczej, w zasadzie to, co trzeba zrobić, to zainstalować pakiety Xvfb związane określających je w dockerfile i że powinno załatwić sprawę.
Powodzenia!
Ważne Uwagi:
Powyższy apt-get pakiety są uzależnione od dostępności dotyczącej distro linux (powyższy kod działa na Ubuntu i Debianie). Na przykład, przy określonym zestawie pakietów i w czasie tego posta będzie on działał z elastycznym środowiskiem GAE, ponieważ jest oparty na debian jessie i nie będzie działał na alpejskim systemie Linux.
Chromium potrzebuje minimalnej alokacji dev/shm, aby dobrze działał. Na przykład na heroku jest ustalone na 5mb - i nie ma sposobu, aby to zmienić. Chromium ulegnie awarii po kilku koszmarnych działaniach. W związku z tym chrom nie będzie działał na żadnych dynamach Heroku o dowolnej wielkości. W docker jest ustawiony na 64mb, więc w zależności od złożoności skryptu będzie dobrze lub trzeba go dostosować. W zwykłych instalacjach Linux, dev/shm jest zwykle ustawiony na połowę całkowitej dostępnej pamięci. Tak więc w środowisku o wielkości 512 MB, dev/shm zostanie ustawione na 256 MB, a koszmar najprawdopodobniej będzie działał dobrze.
Warto zauważyć, że NIE MOŻNA zmienić/dev/shm na appengine. –