Créez un conteneur IBM (conteneur Docker) qui contient les outils requis pour l'API IBM Watson et le traitement du langage naturel japonais basé sur Python, et enregistrez-le dans le référentiel IBM Bluemix afin qu'il puisse être réutilisé. Puisqu'il s'agit d'un conteneur pour l'environnement de développement, nous allons bien sûr concevoir des moyens de maintenir le conteneur en fonctionnement continu.
Construisez le conteneur Docker cible dans votre propre environnement PC et enregistrez-le dans le référentiel de conteneurs Bluemix. Puisque Docker d'Ubuntu Linux est pratique comme environnement à construire, créez d'abord un environnement dans lequel Ubuntu Linux s'exécute avec Vagrant dans votre propre environnement PC. Ici, le lien suivant sera utile pour savoir comment préparer l'environnement Vagrant.
Une fois que vous avez un environnement Vagrant, démarrez votre fausse machine Ubuntu Linux et installez Docker.io.
Ensuite, installez la commande Cloud Foundry cf et la commande Bluemix bx et connectez-vous à votre compte Bluemix. Bien sûr, obtenir un compte Bluemix est un must. Les liens suivants vous aideront à remplir ces conditions préalables.
En tant qu'outil de traitement japonais, NLTK made in Python est pratique, nous allons donc créer un conteneur qui peut exécuter le dernier Python. Comme l'image officielle de Docker est utilisée comme modèle de Dockerfile dans le dernier environnement de Python, clonez le Dockerfile sur Ubuntu de Vagrant avec la commande suivante. Il y a tous les modèles de la série Python 2.7 et de la série 3 dans ce modèle, mais cette fois j'utilise Python 2.7.
root@ubuntu-xenial:~/docker# git clone https://github.com/docker-library/python
Accédez au répertoire Python 2.7 et modifiez le Dockerfile.
root@ubuntu-xenial:~/docker/python# ls
2.7 3.6 Dockerfile-slim.template README.md
3.3 Dockerfile-alpine.template Dockerfile-windowsservercore.template update.sh
3.4 Dockerfile-debian.template generate-stackbrew-library.sh
3.5 Dockerfile-onbuild.template LICENSE
root@ubuntu-xenial:~/docker/python# cd 2.7
root@ubuntu-xenial:~/docker/python/2.7# ls
alpine Dockerfile onbuild slim wheezy windows
Les parties à modifier sont répertoriées ci-dessous, alors ajoutez-les au Dockerfile d'origine.
1 FROM buildpack-deps:jessie
2 ADD ./app /app
3
<Omis>
10
11 # runtime dependencies
12 RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends \
13 tcl \
14 tk \
15 mecab \
16 libmecab-dev \
17 mecab-ipadic \
18 mecab-ipadic-utf8 \
19 mecab-utils \
20 emacs-nox \
21 nmon \
22 && rm -rf /var/lib/apt/lists/*
L'explication des pièces supplémentaires est indiquée ci-dessous.
77 RUN pip install --no-cache-dir mecab-python
78 RUN pip install --no-cache-dir watson-developer-cloud
79 RUN pip install --no-cache-dir BeautifulSoup
80 RUN pip install --no-cache-dir nltk
Je vais énumérer les corrections suivantes.
80 RUN pip install --no-cache-dir nltk
81
82 CMD ["bash", "/app/loop_wait"]
Enfin, exécutez la commande pour exécuter sleep dans une boucle infinie afin que le conteneur ne se termine pas.
Une description de ADD ./app/app ci-dessus. Créez le répertoire de l'application dans le dossier 2.7, créez les fichiers suivants et donnez le droit d'exécution chmod + x loop_wait.
!/bin/bash
while true; do sleep 60; done
En exécutant ce fichier à partir du CMD sur la dernière ligne 82 du Dockerfile, le conteneur continuera à s'exécuter.
Construisez le contenant dans votre environnement vagabond. Exécutez la commande suivante à l'emplacement du fichier Dockerfile et du répertoire de l'application. Installez les packages requis dans le conteneur, collectez les fichiers, compilez Python 2.7.13 et construisez le conteneur. La création de ce conteneur peut prendre jusqu'à 10 minutes.
root@ubuntu-xenial:~/python/2.7# docker build -t mynode:python .
Lorsque la génération est terminée, le message suivant s'affiche, afin que vous puissiez connaître le succès de la génération.
Step 9 : RUN pip install --no-cache-dir virtualenv
---> Running in 3259e634ff72
Collecting virtualenv
Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
---> b95cc31c623c
Removing intermediate container 3259e634ff72
Step 10 : CMD python2
---> Running in 3fb0181e560c
---> 25903811171b
Removing intermediate container 3fb0181e560c
Successfully built 25903811171b
Ensuite, récupérez le nom du référentiel Bluemix. La commande cf est l'outil CLI de fonderie de cloud sur lequel Bluemix est basé, et l'ic suivant est une sous-commande qui pointe vers le plug-in Docker.
root@ubuntu-xenial:~/docker/python/2.7# cf ic namespace get
takara_node
Marquez votre conteneur local avec le référentiel Bluemix.
root@ubuntu-xenial:~/docker/python/2.7# docker tag mynode:python registry.ng.bluemix.net/takara_node/python
Enregistrez le conteneur construit dans le référentiel Bluemix avec la commande suivante.
root@ubuntu-xenial:~/docker/python/2.7# docker push registry.ng.bluemix.net/takara_node/python
Vous pouvez risquer le conteneur commun enregistré de Bluemix et votre propre conteneur enregistré avec la commande suivante. Vous pouvez voir que le conteneur python est enregistré dans la dernière ligne.
root@ubuntu-xenial:~/docker/python/2.7# cf ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.ng.bluemix.net/ibmnode latest acec21732cb5 11 days ago 192.5 MB
registry.ng.bluemix.net/ibmnode v4 acec21732cb5 11 days ago 192.5 MB
<Omis>
registry.ng.bluemix.net/ibmliberty webProfile7 6b2b8341fa32 5 weeks ago 276 MB
registry.ng.bluemix.net/takara_node/mynode1 latest 721caef84790 12 days ago 190.9 MB
registry.ng.bluemix.net/takara_node/python latest 17f60ad04c10 2 hours ago 334.4 MB
Dans cet état, si vous regardez le catalogue sur le portail Bluemix, vous devriez voir le conteneur ci-dessus. En bas à droite, vous verrez un conteneur violet appelé python.
Vous pouvez également démarrer le conteneur à partir de l'écran du portail du Web, mais vous pouvez également démarrer le conteneur avec la commande CLI suivante.
root@ubuntu-xenial:~/python/2.7# cf ic run --name python -m 512 registry.ng.bluemix.net/takara_node/python:latest
La première fois, il faut environ 1 minute pour construire le conteneur. Lors de la construction, vous pouvez savoir qu'elle est en cours de construction avec la commande cf ic ps suivante.
root@ubuntu-xenial:~/python/2.7# cf ic ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edd1f16c-625 registry.ng.bluemix.net/takara_node/python:latest "" 15 seconds ago Building 14 seconds ago python
Vous pouvez également vérifier cela depuis le portail Bluemix. État de construction du conteneur
Construire l'état complet
Écran des détails du conteneur
La commande suivante vous permettra de vous connecter au conteneur et d'exécuter des commandes depuis le shell.
root@ubuntu-xenial:~/docker/python/2.7# cf ic exec -it python /bin/bash
root@instance-003624a8:/# ps -ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 bash /app/loop_wait
18 ? Ss 0:00 /bin/bash
24 ? S 0:00 sleep 60
25 ? Ss 0:00 /bin/bash
31 ? R+ 0:00 ps -ax
Utilisez stop pour arrêter le conteneur.
root@ubuntu-xenial:~/python/2.7# cf ic ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cea800cf-862 registry.ng.bluemix.net/takara_node/python:latest "" 6 hours ago Running 6 hours ago python
26dba932-cc4 registry.ng.bluemix.net/takara_node/mynode1:latest "" 12 days ago Running 12 days ago 169.46.19.213:3000->3000/tcp mynode1
root@ubuntu-xenial:~/python/2.7# cf ic stop cea800cf-862
cea800cf-862
Utilisez rm pour supprimer le conteneur.
root@ubuntu-xenial:~/python/2.7# cf ic rm cea800cf-862
cea800cf-862
Utilisez rmi pour supprimer l'image du conteneur.
root@ubuntu-xenial:~/python/2.7# cf ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
<Omis>
registry.ng.bluemix.net/takara_node/python latest 8cd32e284563 7 hours ago 310.2 MB
root@ubuntu-xenial:~/python/2.7# cf ic rmi registry.ng.bluemix.net/takara_node/python
Untagged: sha256:8cd32e2845639a3fad5bd6e26c7a57c3f69539cebbd846535bb99b634aa8b324
Pour supprimer l'image utilisée pour la construction dans l'environnement local, utilisez la commande docker.
root@ubuntu-xenial:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynode python 8cd32e284563 7 hours ago 852 MB
registry.ng.bluemix.net/takara_node/python latest 8cd32e284563 7 hours ago 852 MB
root@ubuntu-xenial:~# docker rmi mynode:python
Untagged: mynode:python
root@ubuntu-xenial:~# docker rmi registry.ng.bluemix.net/takara_node/python:latest
Confirmez que MeCab est installé
root@instance-003624a8:/# mecab -v
mecab of 0.996
Confirmation de l'introduction de NLTK de Python
root@instance-003624a8:/# python
Python 2.7.13 (default, Feb 17 2017, 23:23:18)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> nltk.download()
NLTK Downloader
---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
Downloader>