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 il est également fluide et facile à utiliser, ce qui le rend plus populaire que d'autres technologies similaires. Depuis sa première version open source en mars 2013, Docker a attiré l'attention des développeurs et des ingénieurs d'exploitation, et selon Docker Inc., les utilisateurs de Docker ont téléchargé plus de 105 milliards de conteneurs et 5,8 millions de conteneurs sur Docker Hub. Amarré. Le Github du projet compte plus de 32 000 étoiles.
Aujourd'hui, Docker est devenu tellement courant. Plus de 100 000 projets tiers avec cette technologie Il est également vrai qu'il existe une demande croissante de développeurs ayant des compétences en conteneurisation qui utilisent.
Cet article explique d'abord comment utiliser Docker pour conteneuriser votre application, puis comment utiliser Docker Compose pour l'exécuter dans un environnement de développement. Utilisez l'API Python comme application principale.
Dans MetricFire , Peut vous aider à surveiller votre configuration Python. Pour voir comment cela peut vous aider, veuillez réserver une démo [https://www.metricfire.com/demo/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Develop%20and%20Deploy%20a%20Python] % 20API% 20 avec% 20Kubernetes% 20 et% 20Docker) S'il vous plaît.
Avant de commencer, nous allons installer certaines exigences. Nous utiliserons l'API Mini Python développée dans Flask. Flask est un framework Python et un excellent choix pour le prototypage rapide d'API, et nos applications sont développées à l'aide de Flask. Si vous êtes nouveau dans Python, voici les étapes pour créer cette API.
Tout d'abord, créez un environnement virtuel Python pour séparer les dépendances du reste des 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. Essayez d'exécuter les deux commandes suivantes.
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é. Pour vérifier cela, tapez:
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 et activez le projet pour le dossier dans lequel vous souhaitez créer l'environnement virtuel. Il crée également un dossier d'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
N'oubliez pas de "figer" les dépendances dans un fichier appelé requirements.txt. Ce fichier sera utilisé ultérieurement pour installer les dépendances d'application dans le conteneur.
pip freeze > requirements.txt
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
Le code initial de l'API est
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
Et tout le code 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 descriptif qui contient diverses étapes et instructions que le démon Docker doit suivre pour créer une image. Après avoir créé l'image, vous pouvez 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 cet exemple, nous utiliserons "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). Nous avons également mappé le port hôte 5000 au port de conteneur exposé 5000, de sorte que le port 5000 est également accessible.
Si vous souhaitez voir le conteneur créé, 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 devriez maintenant pouvoir 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 la définition et l'exécution d'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. Sans Compose, il serait frustrant 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
Ensuite, exécutez "docker-compose up" pour démarrer l'exécution du service, ou exécutez "docker-compose up --build" pour générer et ensuite exécuter.
Dans cet article, j'ai appris à créer un conteneur Docker pour l'API Mini 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 Veuillez nous contacter si cela convient à votre environnement.
Recommended Posts