[RAILS] Führen Sie Docker in die Anwendung ein, die Sie erstellen

Einführung

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)

Annahme

Rails App erstellt

Umgebung

Mac OS Catalina Ruby 2.6.5 Rails 6.0.0 MySQL 5.6.47

Was ging

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.

Am Ende

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

Führen Sie Docker in die Anwendung ein, die Sie erstellen
Rails6 Ich habe versucht, Docker in eine vorhandene Anwendung einzuführen
Sie müssen winpty mit Docker Exec [Windows] verwenden.
Versuchen Sie, OpenCV in die Android-Anwendung einzuführen
Bis zur Einführung von Schriftarten in Rails
[GCP] Bis Sie das lokale Docker-Image in die Container-Registrierung verschieben
Vorgehensweise zum Migrieren der Rails-Anwendungsentwicklungsumgebung zu Docker, auch wenn Sie unerfahren sind (Rails5 + MySQL8.0 + Docker-Compose)
Untersuchen Sie den Ersatz von Docker zu Podman.
Der Weg zur Erstellung eines Soundspiels 2
Der Weg zur Erstellung eines Soundspiels 3
Der Weg zur Erstellung eines Soundspiels 1
[Java] Lesen Sie die Fehlermeldung richtig? [Lesen des Stack-Trace]
Wenn Sie Android Room verwenden und die Spaltendefinition ändern möchten
Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein
Über den Fall, in dem der Freeter "Docker" versucht hat, Docker in die vorhandene Rails-Anwendung einzufügen
So überprüfen Sie das Protokoll im Docker-Container
Wenn Sie die Methode außerhalb verwenden möchten
So löschen Sie die Datenbank beim Neuerstellen der App
[Java / PostgreSQL] Verbinden Sie die WEB-Anwendung mit der Datenbank
Schieben Sie das Image mit Jib zum Docker-Hub
Der Weg zum Erstellen eines Webdienstes (Teil 1)
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
Überprüfen Sie den Status der Ratenbegrenzungsanwendung für Docker Pull
Verwenden Sie die Standardmethode der Schnittstelle ordnungsgemäß?
Löschen Sie die Migrationsdatei, die Sie nicht löschen konnten, vollständig
Befehl, um Docker vorerst zu verwenden
Wenn Sie eine Java-Anwendung in ein Docker-Image verwandeln möchten, ist es praktisch, Jib zu verwenden.
Was tun, wenn Sie die Listen-Adresse im Einstellungsbildschirm des Dockers Mattermost ändern?
Notiz, die zum Anmeldebildschirm übergeht, wenn Sie nicht mit devise angemeldet sind
Wenn Sie die Hauptzweiginformationen in dem aktuellen Zweig wiedergeben möchten, an dem Sie gerade arbeiten