Docker est l'une des technologies de conteneurisation les plus populaires. C'est un outil facile à utiliser et facile à utiliser pour les développeurs, et présente l'avantage d'être plus fluide et plus facile à utiliser que d'autres technologies similaires. Depuis sa première version open source en mars 2013, Docker a été au centre de l'attention des développeurs et des ingénieurs d'exploitation. Selon Docker Inc., les utilisateurs de Docker ont téléchargé plus de 105 milliards de conteneurs sur Docker Hub et ancré 5,8 millions de conteneurs. Ce projet compte plus de 32 000 étoiles sur Github.
Depuis lors, Docker est devenu courant et plus de 100 000 projets tiers ont utilisé cette technologie, augmentant la demande de développeurs ayant des compétences en conteneurisation.
Cet article de blog décrit comment utiliser Docker pour conteneuriser votre application et comment utiliser Docker Compose pour exécuter votre application dans un environnement de développement. Utilisez l'API Python comme application principale.
MetricFire Free Réservation Découvrez comment surveiller votre configuration Kubernetes, Python.
Avant de commencer, installez certaines exigences. Ici, nous utilisons la mini API Python développée dans Flask. Flask est un framework Python et constitue un excellent choix pour le prototypage rapide d'API. Notre application est développée avec Flask. Si vous êtes nouveau dans Python, voici les étapes pour créer cette API.
Commencez par créer un environnement virtuel Python et séparez les dépendances des autres dépendances système. Avant cela, vous avez besoin de PIP, le célèbre gestionnaire de packages Python.
L'installation est très simple. Vous devez exécuter deux commandes:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Pour référence, Python 3 doit être installé. Vous pouvez vérifier cela en tapant:
python --version
Après avoir installé le PIP, utilisez la commande suivante pour installer l'environnement virtuel.
pip install virtualenv
Vous pouvez trouver d'autres méthodes d'installation en suivant le guide officiel. Ensuite, créez un projet dans le dossier où vous devez créer un environnement virtuel et l'activer. Il crée également un dossier pour l'application et un fichier appelé app.py.
mkdir app
cd app
python3 -m venv venv
. venv/bin/activate
mkdir code
cd code
touch app.py
Créez une API simple pour afficher la météo d'une ville particulière. Par exemple, supposons que vous souhaitiez afficher la météo à Londres. Doit être demandé en utilisant l'itinéraire:
/london/uk
Vous devez utiliser PIP pour installer les dépendances Python appelées "flask" et "requests". Nous les utiliserons plus tard:
pip install flask requests
Le fichier des exigences ressemble à ceci:
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
Il s'agit du code initial de l'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)
Pour tester, vous devez exécuter python app.py et accéder à http: //127.0.0.1:5000/. "AppWorks!" S'affiche. Sur la page Web. Assurez-vous de créer un compte sur le même site Web et de générer une clé API car nous utiliserons les données d'openweathermap.org.
Ensuite, nous devons ajouter du code utile à l'API pour afficher les données météorologiques d'une ville particulière.
@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
Le code global ressemble à ceci:
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
},
...
La mini API fonctionne. Conteneurisons-le en utilisant Docker.
Créons un conteneur API. La première étape consiste à créer un Dockerfile. Un Dockerfile est un fichier texte utile qui contient diverses étapes et instructions que le démon Docker doit suivre pour créer une image. Après avoir construit l'image, vous pourrez exécuter le conteneur.
Dockerfile commence toujours par une instruction FROM.
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" ]
Dans le fichier ci-dessus, j'ai fait ce qui suit:
Après avoir créé le Dockerfile, vous devez créer le Dockerfile avec le nom de l'image et les balises que vous choisissez. Dans ce cas, utilisez «météo» comme nom et «v1» comme balise.
docker build -t weather:v1 .
Assurez-vous que vous créez à partir du dossier contenant les fichiers Dockerfile et app.py.
Après avoir créé le conteneur, vous pouvez l'exécuter en utilisant:
docker run -dit --rm -p 5000:5000 --name weather weather:v1
Le conteneur s'exécute en arrière-plan car il utilise l'option -d. Le conteneur s'appelle "météo" (-nom météo). Étant donné que le port hôte 5000 est mappé au port de conteneur exposé 5000, il est également accessible sur le port 5000.
Si vous souhaitez confirmer la création du conteneur, vous pouvez utiliser:
docker ps
Vous devriez voir une sortie qui est très similaire à la sortie suivante.
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
Vous pouvez maintenant interroger l'API. Testons en utilisant CURL.
curl http://0.0.0.0:5000/london/uk/
Si la dernière commande doit renvoyer JSON:
{
"base": "stations",
"clouds": {
"all": 90
},
"cod": 200,
"coord": {
"lat": 51.51,
"lon": -0.13
...
}
Docker Compose est un Docker Inc pour définir et exécuter des applications Docker multi-conteneurs. Un outil open source développé par. Docker Compose est également un outil destiné à être utilisé dans les environnements de développement. Cela vous permet de recharger automatiquement le conteneur lorsque votre code est mis à jour, sans avoir à redémarrer manuellement le conteneur ou à reconstruire l'image à chaque modification. Il serait frustrant sans Compose de développer en utilisant uniquement des conteneurs Docker.
La partie implémentation utilise le fichier "docker-compose.yaml".
Il s'agit du fichier "docker-compose.yaml" utilisé par l'API.
version: '3.6'
services:
weather:
image: weather:v1
ports:
- "5000:5000"
volumes:
- .:/app
Dans le fichier ci-dessus, vous pouvez voir que le service "météo" a été configuré pour utiliser l'image "météo: v1". Mappez le port hôte 5000 au port conteneur 5000 et montez le dossier actuel dans le dossier «/ app» à l'intérieur du conteneur.
Vous pouvez également utiliser un Dockerfile au lieu d'une image. J'ai déjà un Dockerfile, je le recommande donc dans ce cas.
version: '3.6'
services:
weather:
build: .
ports:
- "5000:5000"
volumes:
- .:/app
Maintenant, exécutez "docker-compose up" pour démarrer l'exécution du service, ou exécutez "docker-compose up --build" pour générer puis exécuter.
Dans cet article, j'ai appris à créer un conteneur Docker pour la mini API Python et j'ai utilisé Docker Compose pour créer un environnement de développement. Si vous utilisez un autre langage de programmation tel que Go ou Rails, vous suivez généralement les mêmes étapes, avec quelques différences mineures. MetricFire Free Réservation 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%20and%20Docker) est adapté à l'environnement de surveillance. Veuillez vérifier si.
Recommended Posts