Durch erstes Berühren von Docker habe ich die zu erstellende Rails-Anwendung in einen Container gestellt und zuerst eine Entwicklungsumgebung erstellt. Übrigens habe ich es unter Bezugnahme auf diesen Artikel eingeführt. [Ruby on Rails Ich möchte Docker eine App vorstellen, die ich auf halbem Weg erstellt habe](https://qiita.com/majorboy/items/9fbfc78fc7bbc1f35e77#5-%E3%82%B3%E3%83% B3% E3% 83% 86% E3% 83% 8A% E3% 82% 92build% E3% 81% 99% E3% 82% 8B-Docker-Compose-Build)
Rails App erstellt
Mac OS Catalina Ruby 2.6.5 Rails 6.0.0 MySQL 5.6.47
Diesmal werden zwei Dateien erstellt, "Dockerfile" und "docker-compose.yml". (Da die Rails-App bereits als Prämisse erstellt wurde, müssen diesmal keine neuen "Gemfile" und "Gemfile.lock" erstellt werden.) ** Für Gemfile.lock muss jedoch ein Bundle installiert werden, indem alle Beschreibungen vor dem Erstellen des Containers einmal gelöscht werden. ** ** **
Gemfile.lock
#Wenn es eine Beschreibung gibt, löschen Sie sie.
#Gehen Sie wie folgt vor, bevor Sie den Container bauen
% docker-compose run web bundle install
Dann bauen Sie den Container
% docker-compose build
Dann muss ich auch eine DB für Docker erstellen, also führen Sie Folgendes aus
% docker-compose run web bundle exec rake db:create
% docker-compose run web bundle exec rake db:migrate
Dadurch wird der Container gestartet
% docker-compose up
Ich konnte es starten, aber ich konnte keine Verbindung herstellen, obwohl ich es mit einem Browser überprüft habe. Überprüfen Sie zunächst den Status des Containers.
#Zeigt den laufenden Docker-Container an
% docker ps
=>
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad25b9c231b9 mysql:5.7 "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 33060/tcp, 0.0.0.0:4306->3306/tcp drill_app2_db_1
Nur MySQL funktioniert. Wenn Sie häufig auf den Startbildschirm schauen,
web_1 | sh: 1: yarn: not found
web_1 | ========================================
web_1 | Your Yarn packages are out of date!
web_1 | Please run `yarn install --check-files` to update.
web_1 | ========================================
web_1 | Exiting
Die Webseite (ich weiß nicht, wie ich es sagen soll) wurde nicht gestartet. Das Garn scheint alt zu sein, also werde ich es aktualisieren.
% docker-compose run web yarn upgrate
=>
Error response from daemon: OCI runtime create failed: container_linux.go:349:
starting container process caused "exec: \"yarn\": executable file not found in $PATH": unknown
Dies gibt auch einen Fehler und kann nicht aktualisiert werden. Als ich mich fragte, was ich tun sollte, fand ich einen Artikel in der gleichen Situation, daher werde ich die Dateieinstellungen entsprechend ändern. Docker-Compose-Up ist aufgrund von Garn nicht möglich (Ihre Garnpakete sind veraltet!)
config/webpacker.yml
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
#Unten wahr=>Wechseln Sie zu false
check_yarn_integrity: false
"check_yarn_integrity:" scheint eine Einstellung zu sein, die Sie darüber informiert, ob das Paket für js veraltet ist. Hier schalten Sie es einmal aus. Ich habe die Option check_yarn_integrity von Webpacker überprüft
Beginnen Sie jetzt erneut.
% docker-compose up
Damit ist der Start vorerst abgeschlossen. Der Browser wird ebenfalls angezeigt. Die Verbindung zu MySQL ist ebenfalls in Ordnung.
Anscheinend war das Webpack in der Rails6-Serie enthalten, so dass irgendwie ein Garnfehler vorliegt. Dann war es vielleicht schlecht, Gemlock.file zu löschen. (Entschuldigung, es wurde noch nicht im Detail untersucht.)
Recommended Posts