Heim >Technologie-Peripheriegeräte >IT Industrie >Die funktionale Tiefe von Docker und Docker komponieren
Multi-Container-Flask-Anwendung mit Docker Compose und Vultr Containerregistrierung
Build MitDocker Compose können Benutzer Multi-Container-Anwendungen mithilfe einer einzelnen Konfigurationsdatei ausführen und definieren. Es vereinfacht den Prozess der Einrichtung und Verwaltung mehrerer Container und erleichtert die Entwicklung, Prüfung und Bereitstellung von Anwendungen. In diesem Artikel werden Sie mit zwei Containern eine Flash-Anwendung erstellen, Docker-Bilder Ihrer Anwendung mithilfe der Vultr Containerregistrierung (VCR) verwalten und mehrere Container mit der Multi-Container-Funktionalität von Docker Compose verwalten.
Erstellung der Stichprobenanwendung
In den folgenden Schritten wird eine Beispielanwendung erstellt:
Bereitstellen einer Vultr -Computerinstanz mit der Docker -Marktanwendung über das Vultr -Kundenportal.
Verwenden Sie SSH, um mit Nicht-Root-Sudo-Benutzern auf den Server sicher zugreifen zu können.
Aktualisieren Sie den Server.
Erstellen Sie ein neues Projektverzeichnis und geben Sie es ein:
<code class="language-bash">mkdir flask-redis-example cd flask-redis-example</code>
Erstellen Sie eine neue Datei mit dem Namen app.py
:
<code class="language-bash">nano app.py</code>
Fügen Sie den folgenden Code hinzu:
<code class="language-python">from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)</code>
Speichern und beenden Sie die Datei. Dieser Flaskcode wird mit der Redis -Datenbank verbunden und erhöht den Zähler bei jedem Zugriff auf die Root -URL.
Eingehende Verbindungen zum Port 5000 und das Laden der Firewall:
neu laden:<code class="language-bash">sudo ufw allow 5000 sudo ufw reload</code>
requirements.txt
Erstellen Sie eine neue Datei mit dem Namen
<code class="language-bash">nano requirements.txt</code>
fügen Sie das folgende Paket hinzu:
<code>flask redis</code>
Speichern und schließen Sie die Datei.
flask-redis-example
Erstellen Sie ein anderes Verzeichnis im Verzeichnis
<code class="language-bash"> mkdir static cd static</code>
styles.css
Erstellen Sie eine neue Datei mit dem Namen
<code class="language-bash"> nano styles.css</code>
Fügen Sie den folgenden Code hinzu:
<code class="language-css"> body { font-family: Arial, sans-serif; text-align: center; background-color: #f4f4f4; margin: 0; padding: 0; } h1 { color: #333; margin-top: 50px; } p { font-size: 18px; color: #666; }</code>
Speichern und beenden Sie die Datei.
flask-redis-example
Erstellen Sie ein anderes Verzeichnis im Verzeichnis
<code class="language-bash"> mkdir templates cd templates</code>
index.html
Erstellen Sie eine neue Datei mit dem Namen
<code class="language-bash"> nano index.html</code>
Fügen Sie den folgenden Code hinzu:
<code class="language-html"> <!DOCTYPE html> <title>Flask App</title> <link rel="stylesheet" href="%7B%7B%20url_for('static',%20filename='styles.css')%20%7D%7D"> <h1>Hello, World!</h1> <p>I have been seen {{ count }} times.</p> </code>
Speichern und beenden Sie die Datei.
Verwenden der Vultr -Container -Registrierung
In diesem Abschnitt erstellen Sie eine Vultr -Containerregistrierung, laden Ihr Docker -Image in die Registrierung hoch und richten Sie eine Docker -Komponierungsdatei ein, um die Dienste der Flask- und Redis -Datenbanken einzurichten.
Bereiten Sie eine Vultr -Containerregistrierung ein.
flask-redis-example
Erstellen Sie ein Docker -Manifest im Verzeichnis
<code class="language-bash">nano Dockerfile.flask</code>
Fügen Sie die folgende Konfiguration hinzu:
<code class="language-dockerfile">FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . COPY static/ ./static/ COPY templates/ ./templates/ EXPOSE 5000 CMD ["python", "app.py"]</code>
Speichern und beenden Sie die Datei.
Docker -Bild erstellen:
<code class="language-bash">docker build -t flask-app .</code>
Melden Sie sich bei Ihrer Vultr -Containerregistrierung an:
<code class="language-bash">docker login <url> -u <user> -p <password></password></user></url></code>
<url></url>
achten Sie darauf, <user></user>
, <password></password>
und
Tag Docker Bild:
<code class="language-bash">mkdir flask-redis-example cd flask-redis-example</code>
publizieren den Spiegel in die Vultr -Containerregistrierung:
<code class="language-bash">nano app.py</code>
Stellen Sie nach dem Drücken des Docker -Bildes sicher, dass das Bild im Abschnitt "Repository" des Vultr -Container -Registrals auf dem Vultr -Dashboard vorhanden ist.
Erstellen Sie eine neue Datei mit dem Namen docker-compose.yaml
:
<code class="language-python">from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)</code>
Speichern und beenden Sie die Datei. Die obige YAML -Konfiguration definiert zwei Dienste web
und redis
. web
Service erstellt die Flask -Anwendung aus dem aktuellen Verzeichnis (.) Und ordnet den Port 5000 des Containers auf den Port 5000 des Hosts ab. Es wird auch angegeben, dass der web
-Dienst vom redis
-Dienst abhängt. redis
Der Dienst verwendet das offizielle Redis -Docker -Bild von Docker Hub.
Docker -Komponierungsdatei erstellen:
<code class="language-bash">sudo ufw allow 5000 sudo ufw reload</code>
Besuchen Sie nach Abschluss des Build -Vorgangs die Flask -Anwendung unter http: //
Mehr Nutzung der Vultr -Container -Registrierung
Best Practice
docker-compose.yaml
Keep docker-compose up
Verwenden Sie die integrierten Befehle von Docker Compose wie docker-compose down
, docker-compose ps
und Schlussfolgerung
In diesem Artikel haben Sie eine Flask-Anwendung mit zwei Containern erstellt, die Vultr-Containerregistrierung verwendet, um das Docker-Bild der Anwendung zu verwalten, und die Multi-Container-Funktionalität von Docker komponieren, um mehrere Container zu verwalten.
Dieser Artikel wird von Vultr gesponsert. Vultr ist die weltweit größte private Cloud Computing -Plattform. VOLTER FABETS unter Entwicklern hat mehr als 1,5 Millionen Kunden in 185 Ländern flexible und skalierbare globale Cloud -Computing-, Cloud -GPU-, Bare -Metal- und Cloud -Speicherlösungen zur Verfügung gestellt. Erfahren Sie mehr über Vultr
Das obige ist der detaillierte Inhalt vonDie funktionale Tiefe von Docker und Docker komponieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!