Partie 1: Docker
Partie 2: Présentation de docker-compose
Ce sera la description sur. (La deuxième partie est ici)La notation de la commande est basée sur l'hypothèse que «MacOS» sera utilisé comme PC hôte.
Dans cet article, nous allons créer un PC local en tant que PC hôte Docker.
Dans ce cas, des préparatifs pour l'exécution de Docker sont nécessaires.
Il existe plusieurs méthodes, mais pour MacOS
, installer Docker for Mac
dans brew est le moyen le plus rapide.
Terminal
brew cask install docker
Cela installera l'application, alors lancez Docker.app
localement. Si une icône comme une baleine apparaît en haut à droite et qu'elle s'exécute comme indiqué ci-dessous, elle est terminée.
Voir Github Repository.
Il y a deux changements principaux par rapport à l'étape 1 dans la création d'un conteneur Docker.
--Créer de nouveaux fichiers Docker pour le serveur Web et le serveur d'applications --Créer un nouveau Makefile contenant la commande de démarrage
Parmi ceux-ci, le deuxième Makefile ne fait que simplifier l'entrée de la commande docker, et l'ajout essentiel est le premier Dockerfile. Je voudrais jeter un œil au contenu de chaque Dockerfile. (Le Dockerfile lui-même sera décrit plus tard)
Dockerfile
#Spécifiez l'image de base. Dans ce cas, une balise spécifique est spécifiée jusqu'à la version.
FROM nginx:1.17.6-alpine
#Fichier de configuration du PC hôte(config/nginx.conf)Copiez dans le répertoire créé ci-dessus et envoyez
RUN mkdir -p /etc/nginx
COPY config/nginx.conf /etc/nginx/nginx.conf
Si vous souhaitez simplement utiliser nginx, vous pouvez simplement extraire l'image officielle de nginx publiée sur Docker Hub
. Cette fois, je veux lire le fichier de configuration nginx créé à portée de main et le démarrer, donc je fais le travail suivant.
Dockerfile
#Cette fois, il est basé sur une image python basée sur Debian
FROM python:3.8-slim-buster
#Transfert du fichier de configuration(Je ne peux pas penser à un endroit convenable/Directement sous l'application)
RUN mkdir -p /app/config
COPY requirements.txt /app/requirements.txt
COPY config/gunicorn_settings.py /app/config/gunicorn_settings.py
COPY flask_app.py /app/flask_app.py
#Installation du package
RUN pip install -r /app/requirements.txt
EXPOSE 9876
WORKDIR /app
#Commande lors de l'exécution de run
# ENTRYPOINT->Avec CMD, CMD peut être écrasé par l'argument au moment de l'exécution
ENTRYPOINT [ "gunicorn", "flask_app:app" ]
CMD [ "-c", "/app/config/gunicorn_settings.py" ]
Vous pouvez commencer avec l'image de base d'os uniquement et installer python etc., mais puisque l'image officielle de python a été publiée, cette fois, nous commencerons sur cette base.
Jusqu'à l'installation du package
est presque identique au serveur Web, mais en dessous, il y a une description que le serveur Web n'avait pas. Je fais ce qui suit.
/ app
gunicorn flask_app: app -c / app / config / gunicorn_settings.py
lors du démarrage du conteneur.About Docker
Je pense qu'il y a certaines choses à ce sujet, mais voici deux des avantages que je ressens.
Dans le passé, lors du développement d'une équipe, il était nécessaire pour le développeur de préparer un environnement de développement sur chaque machine, puis de commencer le développement. Il peut y avoir un document qui montre la procédure, mais en réalité, cela peut coûter plus cher car l'environnement ne peut pas être construit correctement pour des raisons telles que des documents incomplets ou des mises à jour d'outils. De plus, il existe un risque que chaque individu améliore sa langue et provoque de subtiles différences. D'autre part, en utilisant le conteneur Docker préparé à l'avance,
docker run
)Vous pouvez en bénéficier.
Maintenant que l'opération sur le cloud est devenue courante, de nombreux outils d'orchestration de conteneurs utilisant GKE, etc. sont sur le marché. Puisqu'il s'agit simplement d'une orchestration de conteneur, cela signifie que l'application s'exécute réellement sur le conteneur, même dans l'environnement de production. Bien sûr, il est nécessaire de changer les variables d'environnement et les points de terminaison entre le développement, la mise en scène et la production, mais cela peut également être absorbé par l'orchestration, et dans tous les cas ** Le conteneur qui a fonctionné dans l'environnement de développement peut être utilisé presque tel quel dans l'environnement de production Il sera opérationnel **.
Tout d'abord, créez une image (= build), puis créez et démarrez un conteneur basé sur cette image. Ce n'est pas un bon exemple, mais si vous le remplacez par un jeu PC --Docker image = disque --Docker container = window pendant que le jeu est en cours d'exécution C'est comme ça.
Un service qui vous permet de télécharger, publier et partager des images de conteneur que vous avez créées. En bref, c'est comme * Github's Docker Limited Edition *. Les images publiées peuvent être téléchargées et utilisées gratuitement. Lors de la création de votre propre image personnalisée, sélectionnez l'image de base parmi celles enregistrées dans Docker Hub.
De nombreuses images de bénévoles sont également enregistrées dans Docker Hub. Parmi eux, celui qui doit être sélectionné comme image de base est celui avec la balise Docker Official Images
.
En un mot, c'est ** parce que c'est fiable **, mais voici quelques bulletins.
Il s'agit d'un fichier qui décrit des instructions permettant d'effectuer une série d'opérations telles que l'image qui constitue la base du conteneur à créer, l'installation de l'application et la préparation du démarrage de l'application.
Veuillez consulter ici pour plus de détails sur la description du Dockerfile.
Recommended Posts