Docker ist eine der beliebtesten Containerisierungstechnologien. Es ist ein benutzerfreundliches und benutzerfreundliches Tool für Entwickler. Es ist außerdem reibungslos und benutzerfreundlich und damit beliebter als andere ähnliche Technologien. Seit seiner ersten Open Source-Version im März 2013 hat Docker die Aufmerksamkeit von Entwicklern und Betriebsingenieuren auf sich gezogen. Laut Docker Inc. haben Docker-Benutzer über 105 Milliarden Container und 5,8 Millionen Container auf Docker Hub heruntergeladen. Angedockt. Der Github des Projekts hat über 32.000 Sterne.
Heute ist Docker so Mainstream geworden. Über 100.000 Projekte von Drittanbietern mit dieser Technologie- Es ist auch wahr, dass es eine wachsende Nachfrage nach Entwicklern mit Containerisierungsfähigkeiten gibt, die diese verwenden.
In diesem Artikel wird zunächst beschrieben, wie Sie Ihre Anwendung mit Docker containerisieren und anschließend mit Docker Compose in einer Entwicklungsumgebung ausführen. Verwenden Sie die Python-API als Haupt-App.
Unter MetricFire Kann Ihnen helfen, Ihr Python-Setup zu überwachen. Um zu sehen, wie es helfen kann, buchen Sie bitte eine Demo [https://www.metricfire.com/demo/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python] % 20API% 20with% 20Kubernetes% 20und% 20Docker) Bitte.
Bevor wir beginnen, werden wir einige Anforderungen installieren. Wir werden die in Flask entwickelte Mini Python API verwenden. Flask ist ein Python-Framework und eine gute Wahl für das schnelle Prototyping von APIs. Unsere Anwendungen werden 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, um die Abhängigkeiten von den übrigen Systemabhängigkeiten zu trennen. Zuvor benötigen Sie PIP, den beliebten Python-Paketmanager.
Die Installation ist sehr einfach. Versuchen Sie, die folgenden zwei Befehle auszuführen.
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Als Referenz muss Python 3 installiert sein. Um dies zu überprüfen, geben Sie Folgendes ein:
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 und aktivieren Sie dann das Projekt für den Ordner, in dem Sie die virtuelle Umgebung erstellen möchten. Außerdem werden ein App-Ordner 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
Vergessen Sie nicht, die Abhängigkeiten in einer Datei namens require.txt "einzufrieren". Diese Datei wird später verwendet, um die App-Abhängigkeiten im Container zu installieren.
pip freeze > requirements.txt
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
Der Anfangscode der API lautet
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
Und der ganze Code sieht so 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 beschreibende Textdatei, die verschiedene Schritte und Anweisungen enthält, die der Docker-Dämon befolgen muss, um ein Image zu erstellen. Nach dem Erstellen des Images 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. In diesem Beispiel verwenden wir "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). Wir haben auch Host-Port 5000 dem exponierten Container-Port 5000 zugeordnet, sodass Port 5000 ebenfalls erreichbar ist.
Wenn Sie möchten, dass der Container erstellt wird, 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 sollten nun in der Lage sein, die API abzufragen. 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 können Sie den Container automatisch neu laden, wenn Ihr Code aktualisiert wird, ohne den Container manuell neu starten oder das Image bei jeder Änderung neu erstellen zu müssen. Ohne Compose wäre es frustrierend, nur Docker-Container zu verwenden.
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 dann "docker-compose up" aus, um den Dienst auszuführen, oder führen Sie "docker-compose up --build" aus, um ihn zu erstellen, und führen Sie ihn dann aus.
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/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python%20API%20with%20Kubernetes%20and%20Docker) Bitte kontaktieren Sie uns, wenn es zu Ihrer Umgebung passt.
Recommended Posts