Ich werde es als Memorandum belassen, dass dies passiert ist, weil es sehr voll war.
Erster Artikel, auf den ich mich bezog https://qiita.com/at-946/items/e96eaf3f91a39d180eb3
Ich habe versucht, es unter Bezugnahme auf den obigen Artikel zu implementieren, erhalte jedoch eine Fehlermeldung ohne Browser. Warum. .. ..
Failure/Error: driven_by :remote_chrome
Webdrivers::BrowserNotFound: Failed to find Chrome binary.
Wenn ich verschiedene Dinge überprüft habe, hat der normale Test bestanden, aber als ich versucht habe, Javascript (js: true) zu testen, scheint es Moos mit dem obigen Fehler zu sein.
config.before(:each, type: :system, js: true) do
driven_by :remote_chrome
Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
Capybara.server_port = 3000
Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
end
↑ Also funktioniert dieser Teil des Artikels, auf den ich mich bezog, nicht gut ...?
Versuchen Sie, auf "http: // localhost: 4444 / wd / hub" zuzugreifen.
Es sieht so aus, als ob es richtig funktioniert.
Starten Sie eine Shell auf einem Webcontainer
$ docker-compose run --rm web sh
Überprüfen Sie, ob eine Kommunikation möglich ist
$ ping chrome
64 bytes from ...
Stellen Sie sicher, dass die Buchstaben ständig fließen. Anscheinend sind der Webcontainer und der Chromcontainer verbunden. Ich verstehe nicht mehr und mehr. .. ..
Egal, was Sie mit Bezug auf verschiedene andere Artikel hinzufügen oder löschen
Failure/Error: driven_by :〇〇〇
Webdrivers::BrowserNotFound: Failed to find Chrome binary.
Unter dem Fehler leiden.
Das Dockerfile sieht übrigens so aus.
Dockerfile
FROM ruby:2.6.6-alpine3.11
RUN apk --no-cache add tzdata \
libxml2-dev \
curl-dev \
make \
gcc \
libc-dev \
g++ \
bash \
mariadb-dev \
mariadb-client \
yarn \
sqlite-dev
RUN gem install bundler -v "2.0.2"
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["bundle", "exec", "falcon", "--verbose", "serve", "-p", "3000", "-b", "http://0.0.0.0"]
Ich steckte in einer Kopie fest und konnte nicht mehr gehen, also ging ich zurück zum Anfang.
-Webbrowser Chrome, Firefox, IE, Opera usw.
- WebDriver Ein Modul, das eine API zum Betreiben eines Browsers bereitstellt
- Selenium Eine Bibliothek, die mit WebDriver kommuniziert und den Browser programmgesteuert bedient
(Zitiert von hier https://qiita.com/Chanmoro/items/9a3c86bb465c1cce738a)
Sie benötigen diese drei, wenn Sie Ihren Browser testen. In der Umgebung mit Docker ist das oben Genannte nicht verfügbar, daher müssen Sie alle vorbereiten.
Außerdem erfahren Sie, wie Sie einen Browser vorbereiten --Bauen Sie Chrom mit dem gleichen Bild wie die Schienenumgebung
Der Artikel, auf den ich mich zuerst bezog, "https: // qiita.com / at-946 / items / e96eaf3f91a39d180eb3", funktionierte nicht. .. ..
https://qiita.com/ngron/items/f61b8635b4d67f666d75#comments Als nächstes werde ich auf diesen Artikel verweisen. Dann hat es mit der Rails New App geklappt! Ein bisschen vorwärts!
Ich habe jedoch einen Fehler in der App erhalten, die ursprünglich den Testcode implementieren wollte. Hier ist der Fehler zu diesem Zeitpunkt.
/bin/sh: apt-get: not found
Wenn Sie den Fehlertext nachschlagen, ist dieser Artikel ein Hit. https://qiita.com/HorikawaTokiya/items/a2a174680d7dd759ccae
Alpines Linux? ?? ?? ?? Ubuntu? ?? ?? Warum über OS sprechen ...?
Gab es etwas, wo das Betriebssystem eingestellt war ...? Versuchen Sie beim Nachdenken, eine andere Beschreibung zwischen der neuen Rails-App und der vorhandenen App zu finden.
Dockerfile
FROM ruby:2.6.6
Dockerfile (vorhandene App)
FROM ruby:2.6.6-alpine3.11
Ah! Ich schreibe Alpine! Aber was meinst du ...? ?? ?? Da mir bewusst war, was zum Erstellen eines Containers für das Docker-Image erforderlich ist, kam plötzlich die Geschichte des Betriebssystems heraus und es gibt eine Beschreibung des Betriebssystems im Ruby-Image? ?? Es ist in einem Zustand.
Folgendes wurde von einem Ingenieur unterrichtet (danke ...)
Alpine verwendet APK als Paketmanager und Debian und Ubuntu verwenden APT. Der Paketmanager ist wie ein Ort, an dem Tools und Apps bereitgestellt werden, die auf dem Betriebssystem installiert werden können, z. B. der iPhone App Store und der Android Play Store. Der Paketmanager ist nach Betriebssystem (oder einer Fraktion) unterteilt, und die installierten Apps unterscheiden sich jeweils geringfügig. Dieselbe App wie MySQL heißt auch MySQL-Server für APT und MySQL für APK, was ebenfalls etwas anders ist.
Im Fall von Docker hängt der Grund für die Abweichung des Betriebssystems vom verwendeten Image ab.
Zum Beispiel Ruby-Image https://hub.docker.com/_/ruby
2.5.8 bis 3.0.0, aber der OS-Name (oder OS-Codename) ist nach jedem alpin oder schlank.
APT und APK sollten als Anwendungen betrachtet werden. Da APT und APK unterschiedliche Anwendungen sind, werden sie unterschiedlich verwendet.
Da es keinen Grund gab, alpine zu verwenden, habe ich die vorhandene App Ruby in Ubuntu's umgeschrieben.
Wenn Sie dann diesem Artikel https: // qiita.com / ngron / items / f61b8635b4d67f666d75 # Kommentare
früher folgen, wird der js-Test auch mit vorhandenen Apps bestanden! Es war lang. .. ..
Schließlich habe ich im ersten Artikel, auf den ich mich bezog, nicht verstanden, warum es nicht funktioniert hat. Der Artikel, der nicht funktionierte, war jedoch das Hinzufügen eines Containers für Chrome zum Docker-Compose, und der Artikel, der funktionierte, befasste sich mit dem Erstellen von Chrome mit demselben Image wie die Rails-Umgebung. Ersteres war also aus irgendeinem Grund ein Versionsunterschied. War der Webcontainer und der Chromecontainer nicht miteinander verbunden? (Es ist ein Rätsel, dass Ping-Chrom vergangen ist ...)
Diesmal habe ich verschiedene Artikel ausprobiert und festgestellt, dass das Bild Unterschiede im Betriebssystem aufweist.
Recommended Posts