Docker ist eine der beliebtesten Containerisierungstechnologien. Es ist ein benutzerfreundliches und benutzerfreundliches Tool für Entwickler und hat den Vorteil, dass es flüssiger und benutzerfreundlicher ist als andere ähnliche Technologien. Seit seiner ersten Open Source-Veröffentlichung im März 2013 steht Docker im Mittelpunkt der Aufmerksamkeit von Entwicklern und Betriebsingenieuren. Laut Docker Inc. haben Docker-Benutzer über 105 Milliarden Container auf Docker Hub heruntergeladen und 5,8 Millionen Container angedockt. Dieses Projekt hat mehr als 32.000 Sterne auf Github.
Seitdem hat sich Docker zum Mainstream entwickelt und mehr als 100.000 Projekte von Drittanbietern haben diese Technologie verwendet, was die Nachfrage nach Entwicklern mit Containerisierungsfähigkeiten erhöht.
In diesem Blogbeitrag wird beschrieben, wie Sie Docker zum Containerisieren Ihrer Anwendung und Docker Compose zum Ausführen Ihrer Anwendung in einer Entwicklungsumgebung verwenden. Verwenden Sie die Python-API als Haupt-App.
MetricFire Reservierung](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python%20API%20with%20Kubernetes%20and%D) Erfahren Sie, wie Sie Ihr Kubernetes, Python-Setup überwachen.
Bevor wir beginnen, installieren Sie einige Anforderungen. Hier verwenden wir die in Flask entwickelte Mini-Python-API. Flask ist ein Python-Framework und eine gute Wahl für das schnelle Prototyping von APIs. Unsere Anwendung wird mit Flask entwickelt. Wenn Sie Python noch nicht kennen, führen Sie die folgenden Schritte aus, um diese API zu erstellen.
Erstellen Sie zunächst eine virtuelle Python-Umgebung und trennen Sie die Abhängigkeiten von anderen Systemabhängigkeiten. Zuvor benötigen Sie PIP, den beliebten Python-Paketmanager.
Die Installation ist sehr einfach. Sie müssen zwei Befehle ausführen:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Als Referenz muss Python 3 installiert sein. Sie können dies überprüfen, indem Sie Folgendes eingeben:
python --version
Verwenden Sie nach der Installation des PIP den folgenden Befehl, um die virtuelle Umgebung zu installieren.
pip install virtualenv
Weitere Installationsmethoden finden Sie in der offiziellen Anleitung. Erstellen Sie dann ein Projekt in dem Ordner, in dem Sie eine virtuelle Umgebung erstellen und aktivieren müssen. Außerdem wird ein Ordner für die App und eine Datei mit dem Namen app.py erstellt.
mkdir app
cd app
python3 -m venv venv
. venv/bin/activate
mkdir code
cd code
touch app.py
Erstellen Sie eine einfache API, um das Wetter für eine bestimmte Stadt anzuzeigen. Angenommen, Sie möchten das Wetter in London anzeigen. Muss über die Route angefordert werden:
/london/uk
Sie müssen PIP verwenden, um Python-Abhängigkeiten zu installieren, die als "flask" und "request" bezeichnet werden. Wir werden sie später verwenden:
pip install flask requests
Die Anforderungsdatei sieht folgendermaßen aus:
certifi==2019.9.11
chardet==3.0.4
Click==7.0
Flask==1.1.1
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
requests==2.22.0
urllib3==1.25.7
Werkzeug==0.16.0
Dies ist der Anfangscode für die API.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'App Works!'
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000)
Zum Testen müssen Sie python app.py ausführen und auf http: //127.0.0.1:5000/ zugreifen. "AppWorks!" Wird angezeigt. Auf der Webseite. Stellen Sie sicher, dass Sie ein Konto auf derselben Website erstellen und einen API-Schlüssel generieren, da wir Daten von openweathermap.org verwenden.
Als nächstes müssen wir der API nützlichen Code hinzufügen, um die Wetterdaten für eine bestimmte Stadt anzuzeigen.
@app.route('/<string:city>/<string:country>/')
def weather_by_city(country, city):
url = 'https://samples.openweathermap.org/data/2.5/weather'
params = dict(
q=city + "," + country,
appid= API_KEY,
)
response = requests.get(url=url, params=params)
data = response.json()
return data
Der Gesamtcode sieht folgendermaßen aus:
from flask import Flask
import requests
app = Flask(__name__)
API_KEY = "b6907d289e10d714a6e88b30761fae22"
@app.route('/')
def index():
return 'App Works!'
@app.route('/<string:city>/<string:country>/')
def weather_by_city(country, city):
url = 'https://samples.openweathermap.org/data/2.5/weather'
params = dict(
q=city + "," + country,
appid= API_KEY,
)
response = requests.get(url=url, params=params)
data = response.json()
return data
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000)
127.0.0.1:5000/london/ukにアクセスすると、次のようなJSONが表示されるはずです。
{
"base": "stations",
"clouds": {
"all": 90
},
"cod": 200,
"coord": {
"lat": 51.51,
"lon": -0.13
},
...
Die Mini-API funktioniert. Lassen Sie es uns mit Docker containerisieren.
Lassen Sie uns einen API-Container erstellen. Der erste Schritt besteht darin, eine Docker-Datei zu erstellen. Eine Docker-Datei ist eine nützliche Textdatei, die verschiedene Schritte und Anweisungen enthält, die der Docker-Dämon befolgen muss, um ein Image zu erstellen. Nachdem Sie das Image erstellt haben, können Sie den Container ausführen.
Dockerfile beginnt immer mit einer FROM-Anweisung.
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /app
EXPOSE 5000
CMD [ "python", "app.py" ]
In der obigen Datei habe ich Folgendes getan:
Nach dem Erstellen der Docker-Datei müssen Sie die Docker-Datei mit dem Bildnamen und den von Ihnen ausgewählten Tags erstellen. Verwenden Sie in diesem Fall "Wetter" als Namen und "v1" als Tag.
docker build -t weather:v1 .
Stellen Sie sicher, dass Sie aus dem Ordner erstellen, der die Dateien Dockerfile und app.py enthält.
Nach dem Erstellen des Containers können Sie ihn ausführen mit:
docker run -dit --rm -p 5000:5000 --name weather weather:v1
Der Container wird im Hintergrund ausgeführt, da er die Option -d verwendet. Der Container heißt "Wetter" (-name Wetter). Da der Host-Port 5000 dem exponierten Container-Port 5000 zugeordnet ist, ist er auch über den Port 5000 erreichbar.
Wenn Sie die Erstellung des Containers bestätigen möchten, können Sie Folgendes verwenden:
docker ps
Sie sollten eine Ausgabe sehen, die der folgenden Ausgabe sehr ähnlich ist.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e659e41d475 weather:v1 "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp weather
Sie können jetzt die API abfragen. Lassen Sie uns mit CURL testen.
curl http://0.0.0.0:5000/london/uk/
Wenn der letzte Befehl JSON zurückgeben muss:
{
"base": "stations",
"clouds": {
"all": 90
},
"cod": 200,
"coord": {
"lat": 51.51,
"lon": -0.13
...
}
Docker Compose ist eine Docker Inc zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. Ein Open Source Tool von. Docker Compose ist auch ein Tool zur Verwendung in Entwicklungsumgebungen. Auf diese Weise kann der Container automatisch neu geladen werden, wenn der Code aktualisiert wird, ohne dass der Container bei jeder Änderung manuell neu gestartet oder das Image neu erstellt werden muss. Ohne Compose wäre es frustrierend, nur mit Docker-Containern zu entwickeln.
Der Implementierungsteil verwendet die Datei "docker-compose.yaml".
Dies ist die von der API verwendete Datei "docker-compose.yaml".
version: '3.6'
services:
weather:
image: weather:v1
ports:
- "5000:5000"
volumes:
- .:/app
In der obigen Datei sehen Sie, dass der Dienst "Wetter" für die Verwendung des Bildes "Wetter: v1" konfiguriert wurde. Ordnen Sie den Host-Port 5000 dem Container-Port 5000 zu und hängen Sie den aktuellen Ordner im Ordner "/ app" im Container an.
Sie können auch eine Docker-Datei anstelle eines Bildes verwenden. Ich habe bereits eine Docker-Datei, daher empfehle ich diese in diesem Fall.
version: '3.6'
services:
weather:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
Führen Sie nun "docker-compose up" aus, um den Dienst auszuführen, oder führen Sie "docker-compose up --build" aus, um ihn zu erstellen und dann auszuführen.
In diesem Beitrag habe ich gelernt, wie ein Docker-Container für die Mini-Python-API erstellt wird, und mit Docker Compose eine Entwicklungsumgebung erstellt. Wenn Sie eine andere Programmiersprache wie Go oder Rails verwenden, führen Sie normalerweise dieselben Schritte aus, mit einigen geringfügigen Unterschieden. MetricFire Reservierung](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python%20API%20with%20Kubernetes%20and%D) MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python%20API%20with%20Kubernetes%20 und Bitte überprüfen Sie, ob.
Recommended Posts