Ich denke nicht so viel, aber wenn Sie Docker Compose mit Rails verwenden, möchten Sie den Rails-Server auf Host- und Client-Seite starten? In meinem Fall konnte ich keine Möglichkeit finden, System Test nur in der Docker-Umgebung zum Laufen zu bringen. In meinem Fall möchte ich Rails in der Ubuntu-Umgebung ausführen und die anderen Systemtests im Container in Docker ausführen. Daher wurde eine solche Umgebung benötigt. Das Problem dabei war, dass die in (Rails root) / tmp / erstellten Dateien auf Host- und Client-Seite in Konflikt gerieten und nicht gleichzeitig gestartet werden konnten. Der Hinweis, den ich in einem solchen Fall lesen und lösen konnte, war "So schließen Sie einen Teil beim Mounten von Volume mit Docker aus", also ich selbst Ich werde die Flugbahn hier verlassen.
Der Punkt ist, dass Rails nicht gleichzeitig gestartet werden kann, da der tmp-Ordner vorhanden ist. Ohne sie können Sie unabhängig von Portkonflikten booten. Der Punkt ist, dass wir eine spärliche Beziehung zueinander haben sollten. Das heißt, die Client- und Host-TMP-Ordner sollten nicht synchron sein. Der folgende Code verhindert, dass nur der tmp-Ordner mit dem Host flattert.
version: '3'
volumes:
rails_tmp_data:
services:
as:
build:
context: ./
ports:
- 3333:3000
volumes:
- ./:/usr/src/app/
- rails_tmp_data:/usr/src/app/tmp/
command:
/bin/sh -c "yarn install --check-files && bundle install && rails db:create && rails db:migrate && rm -f /usr/src/app/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0' --early-hints"
Der obige Code ist auf die Hauptpunkte beschränkt. Bitte beachten Sie daher, dass das Kopieren und Einfügen nicht funktioniert.
Ich habe die Porteinstellungen gebrochen. Ich werde hier nicht darüber schreiben. Es wurde zum Schmerz, unterwegs einen Artikel zu schreiben. Bitte tun Sie etwas dagegen. Korrekt.
Es war nicht Stapa Saito Majirespect, und ich konnte mir einen solchen Titel nur ohne einen Witz vorstellen.