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

Docker in der Entwicklung: Episode 3

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-10 07:58:41756Durchsuche

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>

Ä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>

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>

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>

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>

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>

oder

<code class="language-bash">$ docker ps</code>

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>

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>

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>

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!

Stellungnahme:
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