Heim > Backend-Entwicklung > Python-Tutorial > Docker in der Entwicklung: Episode 3

Docker in der Entwicklung: Episode 3

Mary-Kate Olsen
Freigeben: 2025-01-10 07:58:41
Original
814 Leute haben es durchsucht

Docker in development: Episode 3

In der letzten Ausgabe haben wir erklärt, wie man Ruby on Rails-Anwendungen containerisiert. In dieser Ausgabe untersuchen wir, wie man alltägliche Aufgaben in Containern erledigt.

Rake-Aufgaben und Rails-Befehle ausführen

Rake-Aufgaben auszuführen ist einfach. Nachdem Sie das Image erstellt haben, können Sie mit Docker-Compose Befehle darin ausführen. Wenn Sie beispielsweise die Routen Ihrer Anwendung anzeigen möchten:

<code class="language-bash">$ docker-compose run web rails routes</code>
Nach dem Login kopieren

Ähnlich gilt Folgendes, wenn Sie eine Datenbank erstellen, Daten migrieren und füllen möchten:

<code class="language-bash">$ docker-compose run web rails db:create db:migrate db:seed</code>
Nach dem Login kopieren

Wenn Sie die Testsuite ausführen möchten, müssen Sie eine Testdatenbank erstellen:

<code class="language-bash">$ docker-compose run web rails db:create db:migrate RAILS_ENV=test</code>
Nach dem Login kopieren

Führen Sie dann die Testsuite aus (vorausgesetzt, Rake führt standardmäßig den Rake-Test aus):

<code class="language-bash">$ docker-compose run web rake</code>
Nach dem Login kopieren

Tipp: Erstellen Sie benutzerdefinierte Skripte/Aliase

Ich laufe docker-compose run web rails ... hunderte Male am Tag, und um die Sache einfacher zu machen, habe ich dieses Skript in mein $PATH eingefügt:

<code class="language-bash">#!/bin/bash
docker-compose run web rails "$@"</code>
Nach dem Login kopieren

Bitte beachten Sie, dass dieses Skript davon ausgeht, dass Ihre docker-compose.yml-Datei über einen Webdienst verfügt. Wenn nicht, wird es nicht funktionieren.

Andere Aufgaben ausführen

Bisher sind alle Befehle sehr einfach und unkompliziert, Sie müssen sie nur im Webdienst ausführen. Was machen Sie also mit einigen der schwierigeren Aufgaben wie dem Laden einer bereits vorhandenen Datenbank in die Datenbank eines Containers? Dies war eine der Aufgaben, die ich etwas länger brauchte, um sie herauszufinden.

In PostgreSQL gibt es zwei Möglichkeiten, dies zu tun, abhängig vom Format der Dump-Datei. In der Vergangenheit mussten wir uns mit --format=c Mülldeponien und normalen Mülldeponien auseinandersetzen.

Angenommen, Sie haben eine latest.dump-Datei, die einen PostgreSQL-Dump im C-Format enthält, und möchten ihn in einen (laufenden) Container laden. Zuerst müssen Sie die Container-ID herausfinden. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

<code class="language-bash">$ docker container ls</code>
Nach dem Login kopieren

oder

<code class="language-bash">$ docker ps</code>
Nach dem Login kopieren

Sobald Sie die Container-ID haben (in diesem Beispiel verwenden wir 80f8041db4b4), können Sie den folgenden Befehl ausführen, um den Dump im Container wiederherzustellen:

<code class="language-bash">$ docker exec -i 80f8041db4b4 pg_restore -d app_development -U postgres</code>
Nach dem Login kopieren

Wenn Sie einen regulären Dump haben (z. B. latest.sql), können Sie ihn wiederherstellen mit:

<code class="language-bash">$ docker exec -i 80f8041db4b4 psql -d app_development -U postgres</code>
Nach dem Login kopieren

Wenn Sie Docker-Compose verwenden, wird es einfacher:

<code class="language-bash">$ docker-compose exec -T db pg_restore -d app_development -U postgres</code>
Nach dem Login kopieren

Alles ist in Containern verpackt!

Ich verwende Elastic Beanstalk häufig. Normalerweise installiere ich es mit Homebrew, aber es installiert viele seiner eigenen Abhängigkeiten wie Python, SQLite usw. Ich möchte das alles nicht auf meinem System haben, zumal ich immer Probleme mit der Python-Version habe. Stattdessen containerisiere ich es: docker-awsebcli.

Bleiben Sie gespannt auf die nächste Ausgabe!

Das obige ist der detaillierte Inhalt vonDocker in der Entwicklung: Episode 3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage