[PYTHON] [Introduction à docker / docker-compose] La nouvelle corona a rallongé ma maison, et je voulais changer, mais je ne pouvais pas l'acheter à cause du revendeur, alors j'ai fait quelque chose qui pourrait être Mario.

Objectif de cet article

Nous prévoyons d'utiliser docker-compose dans le système de projection vidéo du groupe vidéo dans le cercle, mais comme il y a beaucoup de non-ingénieurs, nous pratiquerons + output pour les expliquer.

Commencer

C'est Yoshitora. Je voulais créer un outil vidéo avec docker-compose et raspi, donc je vais écrire une introduction à docker-compose ...

C'est peut-être difficile à lire car c'est le premier post de qiita ... je suis désolé ...

En raison du nouveau virus corona, il n'y a pas de nouvelles performances, et même si j'étais affecté au laboratoire, je devais travailler de chez moi ... Le professeur responsable du laboratoire a lu beaucoup de littérature anglaise et m'a dit de m'y habituer, mais je ne pouvais pas faire de mon mieux 24 heures sur 24.

Je voudrais acheter un interrupteur comme pause et jouer à un jeu ...

スクリーンショット (245).png

Bon sang ... Je veux que les revendeurs et les coronas meurent ...

Alors je voulais le faire moi-même. ~~ Les gens qui ont fait des changements à partir de zéro dans le monde, je pense que je vais brûler ou faire exploser ~ ~

Le membre du corps professoral en charge a écrit en relâchement que je devrais toucher à diverses techniques, donc je pense utiliser docker / docker-compose dans l'infrastructure des outils vidéo du groupe, donc je vais y toucher.

Que créer cette fois

En tant que pratique de docker / docker-compose que vous utiliserez certainement à l'avenir sur le système Web, faites quelque chose en l'utilisant,

J'utilise docker-compose comme travail à temps partiel, mais je n'ai rien créé en le configurant à partir de zéro, donc je ferai de mon mieux ...

En parlant de switch, c'est Nintendo, Nintendo crée divers jeux et les sort, n'est-ce pas?

Le plus célèbre d'entre eux est Mario, n'est-ce pas? Alors je vais faire quelque chose qui peut être Mario.

Détails de ce que vous faites réellement

En parlant de Mario, vous détruisez des blocs sur le bord de la route et grattez des pièces et des objets, Je vais donc afficher le bloc sur le PC et créer quelque chose qui fait un son que vous pouvez obtenir des pièces à chaque fois que vous cliquez

À propos de docker brut et de docker-compose

docker / docker-compose est toujours géré dans le monde Web, n'est-ce pas? Personnellement, en un mot, je pense que c'est un outil très puissant pour prévenir les problèmes environnementaux (je suis désolé si je fais une erreur).

La partie la plus difficile du développement est de créer le premier environnement, et il arrive souvent que cela ne fonctionne pas si vous installez différentes versions. Cependant, en utilisant docker / docker-compose, vous pouvez construire l'environnement (version etc.) une fois décidé, donc ce n'est pas le cas! !! ~~ Mais il y a une erreur dans Windows 10 pro, rails et docker-compose ... ~~

Construire docker / docker-compose

Même si vous utilisez docker / docker-compose, vous construirez ces environnements dans un premier temps! Cela ne peut pas s'échapper

Cette fois, nous le ferons avec ubuntu 18.04 lts Comment installer ubuntu18.04lts Si vous avez peur de l'installer sur un ordinateur et d'effacer les données d'origine, vous devez utiliser une boîte virtuelle ou quelque chose comme ça (Si vous ne comprenez pas, écrivez un article de commentaire ...)

installation de docker

Tout d'abord, mettez à jour et mettez à niveau ubuntu et installez le logiciel requis pour l'installation de docker. Si tu ne fais pas ça, tu ne peux rien faire

instal-software


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y \
     apt-transport-https \
     ca-certificates \
     curl \
     software-properties-common

Une brève description du logiciel installé est la suivante

Logiciel Commentaire
apt-transport-https Liés à la sécurité. Est-ce un logiciel qui permet la communication https?
ca-certificates Ceci est également lié à la sécurité. Est-ce un logiciel qui gère les certificats liés à la connexion SSL?
curl Relatif à la communication. Logiciel qui vous permet de vous connecter à Internet manuellement.
software-properties-common Est-ce lié à la gestion des logiciels?

Si vous pouvez l'installer avec succès, beaucoup de caractères apparaîtront et le processus se terminera

Ensuite, installez Clé publique GPG avec la commande suivante afin que docker puisse être installé.

install-GPGkey


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Vous pouvez vérifier si la clé a été installée avec succès avec la commande suivante

check-install-key


sudo apt-key fingerprint 0EBFCD88

À partir du résultat de l'exécution de la commande, si «Docker Release (CE deb) [email protected]» est écrit dans la ligne uid, il réussit.

Ensuite, définissez le référentiel apt afin qu'il puisse être installé avec apt-get. En gros, si vous installez stable de docker, il n'y a pas de problème donc vous pouvez l'installer (il y a d'autres bords et tests !!)

Veuillez noter que la commande diffère selon la faction CPU (?) Vous utilisez ...

x86_64 (processeur Intel ou amd)

x86_Comment faire en 64


sudo add-apt-repository \
     "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable"

armhf (processeur ARM)

Comment faire avec armhf


sudo add-apt-repository \
     "deb [arch=armhf] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable

Mettez à jour apt-get pour refléter le résultat de l'installation

update


sudo apt-get update

À ce stade, vous pouvez installer le docker lui-même! Tu l'as fait! Le docker lui-même peut être installé avec la commande suivante

docker-install


sudo apt-get install -y docker-ce

Le docker installé ne peut pas être géré sans les privilèges d'administrateur (sudo), ce qui est très gênant. Alors accordons des privilèges d'administrateur

add-docker-sudo


sudo usermod -aG docker $USER

Après cela, je vais redémarrer

docker bonjour le monde et bref commentaire / image

Vous pouvez faire hello world of docker (tester s'il a été installé) avec la commande suivante

hello-world


docker run hello-world

Si vous voyez le résultat suivant avec cette commande, il est réussi! Tu l'as fait!

docker-hello-world-result


Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker est basé sur l'idée d'instructions immuables. Immuable signifie immuable / inchangé, instruction signifie commande En d'autres termes, si vous décidez d'une commande telle que comment se déplacer uniquement au début, je l'utiliserai à partir de la prochaine fois.

docker fonctionne avec l'image suivante.

image.png

--Exécuter un conteneur docker sur le moteur docker (docker lui-même)

Le conteneur Docker fonctionne avec l'image suivante.

image.png

Installez docker-compose

Maintenant, installez docker-compose! !! Pour installer docker-compose, installez l'unité principale directement avec CURL, mais comme la destination de l'installation est un endroit qui nécessite des privilèges d'administrateur, installez avec CURL avec des privilèges d'administrateur (sudo).

La commande suivante est une commande d'installation, mais comme la version 1.25.5 de la commande est la version de docker-compose, recherchez la version que vous souhaitez installer à partir de github of docker-compose et réécrivez la commande dans cette version (dernière) release est la dernière version)

install-docker-compose


sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Comme docker, docker-compose est plus facile à accorder des privilèges d'administrateur, alors accordez-le.

add-docker-compose-sudo


sudo chmod +x /usr/local/bin/docker-compose

Ceci termine l'installation de docker-compose! Tu l'as fait!

bonjour le monde de docker-compose et bref commentaire / image

Faisons le bonjour monde de docker-compose Créez le fichier docker-compose.yml suivant

docker-compose.yml


version: '3.8'
services:
  hello:
    image: hello-world:latest

Après l'avoir créé, exécutez la commande suivante dans la hiérarchie où se trouve le fichier pour lancer docker-compose.

docker-compose-run


docker-compose up

Le résultat de l'exécution est presque le même que celui du docker hello world Ce n'est pas un bug trop similaire

Un conteneur peut être géré par docker, tandis que docker-compose peut gérer plusieurs conteneurs. Donc, si vous réécrivez docker-compose.yml comme suit, vous pouvez utiliser docker-compose pour faire hello world de plusieurs dockers à la fois (bien que vous ne le fassiez généralement pas).

docker-compose.yml


version: '3.8'
services:
  hello:
    image: hello-world:latest
  hello2:
    image: hello-world:latest

Si vous pouvez gérer plus d'un, vous pouvez configurer une base de données en plus du serveur de site, et la gamme de choses que vous pouvez faire augmentera à la fois,

À propos de python et de flask

À propos de python

python est un langage de script facile à utiliser avec de faibles coûts d'apprentissage Il y a 2 séries et 3 séries en python, mais je pense que 3 séries est le courant dominant

Avec python, vous pouvez

--Apprentissage automatique --Développement web

Tu peux faire diverses choses, c'est fort

À propos de flask

framework web python J'ai l'impression que beaucoup de gens sont plus plongés dans Django, mais Django sera un développement à grande échelle. Flask, en revanche, peut être développé à petite ou moyenne échelle. Je pense que Flask est plus facile à manipuler même pour la première fois car le coût d'apprentissage est plus faible La Documentation est également légère et facile à lire.

Exécutez flask sur docker-compose

Structure des dossiers

folder/
       app.py
       Dockerfile
       docker-compose.yml

Créer un fichier python

Créez le fichier suivant

app.py


from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello world"

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000)

Créer un Dockerfile

Dockerfile est un fichier qui écrit ce qu'il faut exécuter en premier lorsque docker-compose est lancé.

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
RUN pip install flask
COPY . .
CMD ["flask", "run"]

Commentaire

Création de docker-compose.yml

Le fichier docker-compose.yml est un fichier qui définit l'environnement du conteneur sur docker-compose.

docker-compose.yml


version: '3.8'
services:
  app:
    build: .
    ports:
      - "5000:5000"

Démarrage du serveur

Vous pouvez le démarrer avec la commande suivante

docker-compose up

Une fois lancé, allez sur http://0.0.0.0:5000 et vous verrez "hello world"! Je l'ai fait!

Vous pouvez arrêter le démarrage avec Ctrl + C

Commentaire

En faisant docker-compose up, le contenu du Dockerfile sera exécuté dans l'ordre à partir du haut. Cette fois, "Installer l'image python", "Créer un répertoire sur le conteneur", "Définir la variable d'environnement (ENV)", "Installer le logiciel nécessaire", "Exécuter", et ainsi de suite (tout à fait) C'est rugueux et cassé, mais ...)

Création

Il a été créé-> https://github.com/KinoshitaYstr/mario Téléchargez depuis github et décompressez Si vous le lancez avec docker-compose up dans le dossier extrait et accédez à http: // localhost: 5000, une boîte sera affichée. Cliquez sur la boîte pour obtenir des pièces (S'il vous plaît laissez-moi savoir si vous voulez une explication du code ...)

fin

Tout le monde est Mario avec ça, yafu

Épilogue

Si vous êtes regardé par le service juridique de Nintendo, cet article restera privé ou supprimé. De plus, je veux que les revendeurs et Corona soient regardés par le service juridique de Nintendo ou qu'ils soient condamnés à une amende par Ichikyo Yen. S'il vous plaît laissez-moi savoir si vous faites une erreur ... je vais la réparer ...

Screenshot_20200501_213232_com.android.chrome.jpg Au revoir…

Les références

Matériaux utilisés

--Images d'illustrations et de clients (https://www.irasutoya.com/2017/10/blog-post_455.html) --Source sonore de M. Taira Komori (https://taira-komori.jpn.org/freesound.html)

Pendant que j'écrivais ceci, je me demandais ce que je faisais, mais je me demandais ce que je faisais ...

Recommended Posts

[Introduction à docker / docker-compose] La nouvelle corona a rallongé ma maison, et je voulais changer, mais je ne pouvais pas l'acheter à cause du revendeur, alors j'ai fait quelque chose qui pourrait être Mario.
Je n'aime pas être frustré par la sortie de Pokemon Go, j'ai donc créé un script pour détecter la sortie et le tweeter
Je voulais utiliser le module de recherche d'Ansible2, mais cela a pris du temps, alors prenez note
J'ai essayé de visualiser les paroles de GReeeen, que j'écoutais de façon folle dans ma jeunesse mais que je ne l'écoutais plus.