** Pour garder l'environnement propre. ** **
Sans Docker, python3.7 et python3.8 sont mélangés dans l'environnement local, et il est déjà en désordre. le chaos. Il est également formidable que l'environnement de développement et l'environnement de production puissent être combinés. Il existe de nombreux cas où une erreur se produit en raison de l'environnement différent à chaque fois que vous déployez, mais cela peut être évité. Docker est meilleur que Virtual Box car il démarre beaucoup plus rapidement. Depuis que j'ai commencé à utiliser Docker, ma santé au moment du développement s'est considérablement améliorée. C'est comme si étudier dans un bureau organisé est le même sentiment.
Le contenu est que cela suffit si vous jouez simplement avec le bac à sable sans être conscient de l'environnement de production. Au début, je pense que c'est tout ce dont vous avez besoin. Une fois que vous vous y êtes habitué, je souhaite passer à la version avancée.
#Il tire l'image de base. Le sentiment de créer un environnement de chef-d'œuvre. Placez le paquet etc. dessus.
$nom de l'image d'extraction du docker
# anaconda ->La plupart des packages requis pour l'apprentissage automatique tels que les pandas sont déjà installés, mais ils sont lourds. La légèreté est importante dans un environnement de production, mais je pense que c'est bien pour le développement local.
$ docker pull continuumio/anaconda3
# -Continuez à démarrer Docker avec la commande it. Si vous ne le faites pas, vous ne pouvez pas y travailler car il sera coupé juste en le démarrant une fois. Aussi à la fin/bin/En attachant bash, vous pouvez travailler dans le bash. Une image qui peut utiliser la ligne de commande. Sinon, ce sera en mode interactif python.
$ docker run -it continuumio/anaconda3 /bin/bash
#Si vous apportez des modifications telles que l'installation d'un package à l'intérieur du conteneur, enregistrez les modifications après avoir quitté le conteneur. Sinon, l'environnement initial restera.
#Histoire des conteneurs démarrés
$ docker ps -a
#Enregistrer le conteneur en tant qu'image
$ docker commit container_id container_name
#Consultez la liste des images enregistrées
$ docker images
#Démarrez le conteneur enregistré
$ docker run -it container_name /bin/bash
#Monter le répertoire local (partagé avec Docker). -Décrivez "répertoire local: répertoire Docker" après v.
docker run -it -v /c/Users/user/Python:/home container_name /bin/bash
Cela peut être un peu difficile, mais une fois que vous vous y êtes habitué, vous pouvez le développer plus confortablement et plus efficacement. Je me souviens avoir pris beaucoup de temps ici.
Le flux d'utilisation de base est le suivant.
Ici, je voudrais parler de Dockerfile seul, de la production d'utilisation de docker-compose et de Dockerfile pour l'environnement de production. Finalement, j'aimerais m'habituer au développement en utilisant docker-compose. De plus, ce serait bien de pouvoir créer un Dockerfile pour l'environnement de production.
#Celui décrit en haut facilite l'utilisation du cache, décrivons donc ceux qui changent fréquemment en bas.
# python-buster ->Package minimal pour exécuter python. OS est debian.Je développe avec ça.
FROM python:3.8-buster
#Utilisez un chemin absolu comme chemin. Parce que la structure du répertoire est différente entre local et conteneur.
WORKDIR /app
#Mises à jour du gestionnaire de packages et acquisitions de packages ensemble.apt est apte-Mieux que devenir.
RUN apt update -y && apt upgrade -y && \
apt install -y ffmpeg
#COPY vaut mieux que ADD. Copiez le fichier dans le répertoire de l'application. Copie de fichiers du local vers le conteneur.
COPY requirements.txt /app
# requirements.Voir txt et pip install.Je veux utiliser pip3 dans python3.
RUN pip3 install --upgrade pip && \
pip3 install -r requirements.txt
#Le répertoire spécifié peut être partagé dans chaque environnement.
# VOLUME /data
#Spécifiez explicitement le répertoire à copier. Pour ne refléter que la pièce modifiée. Parce que je suis gênant, ".J'en ai fini avec.
# COPY src /app/src
# COPY data /app/data
COPY . /app
# CMD ["/bin/bash"]
En utilisant Docker-compose, vous pouvez utiliser plusieurs serveurs en même temps. Par exemple, non seulement pour l'exécution de python, mais également pour des bases de données telles que postgres et jupyter. Il est également bon de pouvoir partager des ressources. L'exemple de code est ci-dessous.
docker-compose.yml
version: '3'
services:
notebook:
# image: jupyter/datascience-notebook ->Non requis car l'image de base est décrite dans le Dockerfile.
# container_Si vous ne spécifiez pas de nom, il sera automatiquement généré et il sera difficile de le vérifier ultérieurement.
container_name: vad-sandbox
ports:
- "8888:8888"
# 「.Exécutera le Dockerfile dans le même répertoire.
build: .
#Spécifiez le répertoire à monter.
volumes:
- .:/app
working_dir: /app
#Il exécutera automatiquement la commande. Je le frappe moi-même parce que c'est plus facile à comprendre.
# command: jupyter lab --ip=0.0.0.0 --allow-root
Et voici le dockerfile lors de l'utilisation de docker-compose
FROM python:3.8-buster
WORKDIR /app
RUN apt update -y && apt upgrade -y && \
apt install -y ffmpeg
COPY requirements.txt /app
RUN pip3 install --upgrade pip && \
pip3 install -r requirements.txt
#Utiliser ipywidgets.Vous pouvez utiliser jupyter de manière interactive.
RUN jupyter nbextension enable --py widgetsnbextension --sys-prefix
COPY . /app
# CMD ["/bin/bash"]
Dans un environnement de production, il est important de réduire au maximum la capacité. Par conséquent, une construction en plusieurs étapes est adoptée (l'environnement est divisé entre la construction et l'exécution).
#En python, buster est meilleur que alpin. L'extension c ne peut pas être utilisée avec slim
#Dans la construction en plusieurs étapes, séparez les images pour la construction et l'exécution, et minimisez la capacité
#Celui que vous souhaitez utiliser le cache est décrit en haut. S'il y a un changement, il sera supprimé après cela.
#Pour construire. gcc peut être utilisé pour Buster. Requis pour installer webrtcvad.
FROM python:3.8-buster as builder
#Utiliser le chemin absolu pour le chemin
WORKDIR /app
#Comme pytorch prend beaucoup de temps à installer, il est facile de réutiliser le cache.
RUN pip3 install --upgrade pip && \
pip3 install torch
#COPY vaut mieux que ADD. Copiez le fichier dans le répertoire de l'application.
COPY requirements.txt /app
RUN pip3 install --upgrade pip && \
pip3 install -r requirements.txt
#Conteneur d'exécution
FROM python:3.8-slim-buster as runner
#Copiez le package python installé pour exécution.J'ai pu le réduire d'environ 1 Go.
COPY --from=builder /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages
#Mises à jour du gestionnaire de packages et acquisitions de packages ensemble.apt est apte-Mieux que devenir.
RUN apt update -y && apt upgrade -y && \
apt install -y ffmpeg
COPY . /app
Comme il est très abstrait, il est certain que cela prête à confusion à première vue, mais une fois que vous vous y êtes habitué, cela devient une simple tâche. Vous pouvez vous sentir stressé au début, mais faisons de notre mieux. Vous devriez pouvoir faire appel même si vous êtes actif.
Recommended Posts