Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Construction facile]

introduction

Je m'appelle Ryosuke Kamei et je suis consultant en informatique basé sur l'idée du "doux IT"! Actuellement, dans mon travail, je fais des processus en amont centrés sur l'analyse des exigences et la définition des exigences, mais comme j'écris également des programmes autres que mon activité principale, j'écrirai des articles techniques! Présentation des programmes de biens et services créés avec «Raspberry Pi 3» (communément appelé «Raspberry Pi»), qui a pour philosophie de «fournir des PC bon marché pouvant être programmés pour l'éducation» dans le cadre d'activités informatiques conviviales!

Objectif

Créez un environnement Python-MySQL avec Docker sur Raspai. En fait, j'avais l'intention de le démarrer avec docker-compose, mais seules la construction du serveur d'applications et l'exécution SQL ne fonctionnaient pas. Le niveau d'infrastructure est encore bas. Excusez-moi. Cependant, je pense que ce sera utile! Les données enregistrées dans la base de données supposent l'acquisition de température détectée par Raspeye.

supposition

En supposant que Docker et Git sont installés sur Raspberry Pi, vous pouvez créer un exemple en exécutant les commandes suivantes dans l'ordre dans n'importe quel dossier. Consultez l'article ci-dessous pour installer Docker et Git. Installer Docker et Git sur RaspberryPi3

Bougez pour le moment

Je veux voir ce qui bouge! Si vous êtes impatient comme moi, veuillez exécuter les commandes dans l'ordre suivant dans n'importe quel dossier de Raspberry Pi.

Je l'ai vérifié dans le dossier / home / pi / Workspace.

Mouvement

Cloner avec git et télécharger le fichier


$ git clone [email protected]:RyosukeKamei/rpi-python-bottle.git

Déplacer vers le dossier cloné


$ cd rpi-python-bottle

docker-Créer et démarrer un conteneur de données et un conteneur de base de données avec compose


$ docker-compose up -d

Vérifiez l'image


$ docker images

Vérifiez le conteneur


$ docker ps -a

Connectez-vous au conteneur de base de données


$ docker exec -it rpi-python-bottle-db bash

Entrez un exemple de table et de données


# mysql -u bottle -pbottle measurement < /docker-entrypoint-initdb.d/create_table.sql

Déconnexion du conteneur de base de données


# (Contrl + p, Control + q)

Créer un conteneur d'application


$ docker build -t hypriot/rpi-python .

Démarrez le conteneur d'applications et connectez-vous


$ docker run --name rpi-python-bottle-app -it hypriot/rpi-python bash

Démarrez le serveur


# /usr/local/bin/python3 /home/bottle/server.py

Lorsque vous l'ouvrez dans un navigateur, il s'affichera comme suit. ブラウザで確認

Expliquons!

table des matières

  1. Préparation
  2. git cloner une série de fichiers
  3. Commencez par docker-compose
  4. Connectez-vous au conteneur de base de données (MySQL) et créez des données
  5. Créez le conteneur d'application
  6. Paramètres du serveur d'applications

1. Préparation

Si vous ne disposez pas de Docker ou d'environnement de développement, veuillez vous reporter à ce qui suit. Si Docker est installé, vous pouvez l'ignorer!

1-1. Installez Docker

Voir Installer Docker sur RaspberryPi3!

1-2. Fonctions pratiques (SSH / VNC / AFP)

Il est pratique de mettre en œuvre le chapitre suivant de Installation du Raspberry Pi 3 → LAN sans fil → Entrée / sortie japonaise → fonctionnement depuis Mac (serveur SSH / VNC / AFP).

  1. Accès par SSH
  2. Paramètres VNC (utilisez Raspeye depuis Mac avec GUI)
  3. Paramètres AFP (accéder au système de fichiers Raspai sur Mac)

2. git cloner une série de fichiers

clone git


pi@raspberrypi $ git clone [email protected]:RyosukeKamei/rpi-python-bottle.git

Bouge toi


pi@raspberrypi $ cd rpi-python-bottle

3. Démarrez la base de données et le conteneur de données avec docker-compose

3-1. Commencez par docker-compose

docker-Commencez par composer


pi@raspberrypi $ docker-compose up -d

3-2. docker-compose.yml Pour référence, docker-compose.yml est décrit.

docker-compose.yml


data:
  container_name: rpi-python-bottle-data
  image: hypriot/armhf-busybox
  stdin_open: true
  tty: false
  volumes:
    - ./docker/mysql:/etc/mysql/conf.d:ro
    - ./app:/home/bottle
  command: /bin/sh

mysql:
  container_name: rpi-python-bottle-db
  image: hypriot/rpi-mysql
  volumes:
   - ./initdb.d:/docker-entrypoint-initdb.d
  environment:
    MYSQL_ROOT_PASSWORD: password
    MYSQL_USER: bottle
    MYSQL_PASSWORD: bottle
    MYSQL_DATABASE: measurement
  ports:
    - "3306:3306"
  volumes_from:
    - data

4. Connectez-vous au conteneur de base de données (MySQL) et créez des données

volumes dans docker-compose.yml: ./initdb.d:/docker-entrypoint-initdb.d Si vous définissez, le fichier directement sous le dossier "initdb.d" placé localement sera placé sous le dossier "/docker-entrypoint-initdb.d" sur le conteneur, et le fichier décrit par SQL sera exécuté automatiquement. Cela devrait l'être, mais cela ne semble pas fonctionner ... Il n'y a pas d'autre choix que de créer les données manuellement.

4-1. Procédure

Connectez-vous au serveur de base de données


pi@raspberrypi $ docker exec -it rpi-python-bottle-db bash

Exécutez le fichier dans lequel SQL est écrit


root@{ID du conteneur}:/# mysql -u bottle -pbottle measurement < /docker-entrypoint-initdb.d/create_table.sql

Mise en garde Ne mettez pas d'espace après -p. Le nom d'utilisateur, le mot de passe et le nom de la base de données MySQL sont définis dans docker-compose.yml. Ceci est temporaire, veuillez donc le modifier pour des raisons de sécurité.

Quittez le conteneur de base de données


root@{ID du conteneur}:/# (Contrl + p, Control + q)

4-2. SQL Je publierai le SQL pour référence.

mysql:/docker-entrypoint-initdb.d/create_table.sql


mysql>
CREATE TABLE `temperatures` (
  `id`           int(11) NOT NULL AUTO_INCREMENT,
  `server_id`    int(11) NOT NULL,
  `temperature`  int(11) NOT NULL,
  `careted_at`   datetime NOT NULL,
  `careted_user` int(11) NOT NULL,
  `updated_at`   datetime NOT NULL,
  `updated_user` int(11) NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Insérer des données


mysql>
INSERT INTO `temperatures` 
  (`id`, `server_id`, `temperature`, `careted_at`, `careted_user`, `updated_at`, `updated_user`) 
  VALUES 
  (1, 1, 29, NOW(), 1, NOW(), 1);

5. Créez le conteneur d'application

Les détails seront expliqués dans un autre article.

5-1. Créer un conteneur d'application à partir de Dockerfile

Créer un conteneur d'application


pi@raspberrypi $ docker build -t hypriot/rpi-python .

5-2. Installé

J'ai installé ce qui suit avec apt-get.

Bibliothèque Python à installer avec pip3

Après cela, je crée un utilisateur et configure vim pour Python.

6. Paramètres du serveur d'applications

À l'origine, j'aimerais que le serveur d'applications démarre également, mais cela n'a pas commencé.

6-1. Vérifiez server.py

server.py est copié localement dans "/ home / bottle".

Démarrez le serveur d'applications et connectez-vous


pi@raspberrypi: $ docker run --name rpi-python-bottle-app -it hypriot/rpi-python bash

Vérifiez où vous vous êtes connecté


# pwd
/home/bottle

6-2. Lancez l'application

Lancement d'application


# /usr/local/bin/python3 /home/bottle/server.py

6-3. Vérifier avec le navigateur

Lorsque vous l'ouvrez dans un navigateur, il s'affichera comme suit. ブラウザで確認

6-4. Plugram server.py

Le programme est décrit pour référence.

server.Vérifiez py (s'il y a un problème, corrigez ce fichier)


# vim server.py

server.py


#bibliothèque de bouteilles
from bottle import route, run, request

#Le pilote MySQL est mysql.connector
import mysql.connector

#Supplément
#En fait, si vous mettez un modèle, le HTML sera beau.
#Cette zone sera plus tard ...

#L'adresse IP de l'hôte est$ docker inspect {Nom du conteneur de base de données}Découvrez dans
#Les utilisateurs, mots de passe et bases de données MySQL sont docker-compose.Ce qui a été défini avec yml
# user     : MYSQL_USER
# password : MYSQL_PASSWORD
# database : MYSQL_DATABASE
connector = mysql.connector.connect (
            user     = 'bottle',
            password = 'bottle',
            host     = '172.17.0.3',
            database = 'measurement'
)


			
@route('/list')
def list():
    #Afficher la température
    cursor = connector.cursor()
    cursor.execute("select `id`, `temperature`, `careted_at` from temperatures")

    disp  = "<table>"
    #entête
    disp += "<tr><th>ID</th><th>Température</th><th>Date d'inscription</th></tr>"
    
    #Partie de liste
    for row in cursor.fetchall():
        disp += "<tr><td>" + str(row[0]) + "</td><td>" + str(row[1]) + "</td><td>" + str(row[2]) + "</td></tr>"
    
    disp += "</table>"
    
    cursor.close

    return "Obtenu de DB"+disp

@route('/input_temperature')
def input_temperature():
    #Entrer la température
    cursor = connector.cursor()
    cursor.execute("INSERT INTO `temperatures` (`server_id`, `temperature`, `careted_at`, `careted_user`, `updated_at`, `updated_user`) VALUES (" + request.query.server_id + ", " + request.query.temperature + ", NOW(), " + request.query.user_id + ", NOW(), " + request.query.user_id + ")")

    #commettre
    connector.commit();

    cursor.close

    return "OK"
    

#Fermer le connecteur
connector.close

#Démarrage du serveur
run(host='0.0.0.0', port=8080, debug=True, reloader=True)

6-5. Si non affiché

Les adresses IP du serveur d'applications et du serveur de base de données peuvent différer en fonction de l'ordre et de l'environnement. Quittez le conteneur et retournez à Raspeye pour vérifier l'adresse IP.

Confirmation d'adresse IP


$ docker inspect {Nom du conteneur ou ID du conteneur}

Il devrait y avoir une adresse IP, alors veuillez y accéder depuis votre navigateur! Si vous obtenez une erreur de base de données, modifiez l'adresse IP de la base de données server.py!

S'il n'y a pas de données, vous devriez voir une erreur MySQL dans le conteneur. 4. Connectez-vous au conteneur de base de données (MySQL) et créez des données Veuillez réessayer!

finalement

docker-compose Ce n'était pas un seul coup, mais ... Il semble que vous puissiez créer un environnement Docker + Python + bouteille + MySQL sur Raspeye!

plan du site

Configuration du Raspberry Pi 3

Installation du Raspberry Pi 3 → LAN sans fil → Entrée / sortie japonaise → opération depuis Mac

Créez un environnement Python + MySQL avec Docker sur Raspberry Pi 3!

Installer Docker sur RaspberryPi3 Créez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3![Construction facile] Créez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3![Essai et erreur]

Fabriquez un climatiseur intégré à un ordinateur personnel "airpi" avec Raspberry Pi 3!

Faire un climatiseur intégré PC "airpi" avec Raspberry Pi 3!

Enfin ... Créez un contrôleur radio en utilisant python sur Raspberry Pi 3!

Le moteur se déplace en appuyant sur le bouton Le moteur se déplace tout en rapprochant l'aimant Le moteur se déplace lorsque l'aimant est rapproché et s'arrête automatiquement

Jouons avec Raspberry Pi 3 et Python Record of Raspberry Lutte

Programmation avec programmation Node-RED avec Raspberry Pi 3 et programmation normale Allumez la LED avec python sur Raspberry Pi 3 (Hello World) Détecter l'état du commutateur avec Raspberry Pi 3 Exécutez un servomoteur en utilisant python sur Raspberry Pi 3 Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3! Détectez l'interrupteur à glissière à l'aide de python sur Raspberry Pi 3! Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3! Détectez la température en utilisant python sur Raspberry Pi 3! Raspberry Pi 3 utilise python pour faire sonner le buzzer! Détectez les signaux analogiques avec un convertisseur A / N en utilisant python sur Raspberry Pi 3! Détectez la "luminosité" en utilisant python sur Raspberry Pi 3! Détectez la "température (en utilisant le convertisseur A / N)" en utilisant python sur Raspberry Pi 3! Sortie vers "7 segments LED" en utilisant python sur Raspberry Pi 3! Utilisez python sur Raspberry Pi 3 pour éclairer la LED avec le contrôle du commutateur! Utilisez python sur Raspberry Pi 3 et allumez la LED quand il fait noir!

Règles axées sur le développement piloté par les tests

Règles de codage "Écrivons du code doux" (FuelPHP) Règles de dénomination "Membres sympathiques pour vous-même, conviviaux pour l'équipe et invisibles après 3 mois"

Développement d'applications Web avec Docker + Python

Installez Python3 et les bibliothèques associées pip, virtualenv et framework Django, bouteille, Flask sur CentOS sur Docker! Avec un Dockerfile qui résume ces derniers!

Construction d'environnement facile à développer (Docker + PHP)

Lier l'environnement PHP + Eclipse à Apache à l'aide de Docker Création d'un environnement de développement Fuel PHP à l'aide de Docker Création d'un squelette CRUD à l'aide des paramètres initiaux de l'environnement de développement FuelPHP à l'aide de Docker et de l'échafaudage Migration de la base de données FuelPHP

Recommended Posts

Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Construction facile]
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
Construire un environnement Mysql + Python avec docker
Créez un environnement python avec ansible sur centos6
[Python] Créer un environnement de développement Django avec Docker
Comment créer un environnement Django (python) sur Docker
Créer un environnement python3 sur CentOS7
Créer un environnement Jupyter Lab (Python) avec Docker
Construire un environnement python sur MacOS (Catallina)
Créer un environnement Python avec Anaconda sur Mac
[Linux] Créer un environnement Jenkins avec Docker
Créez un environnement virtuel pour python avec pyenv
Créer un environnement Python + OpenCV sur Cloud9
Créez un environnement Python moderne avec Neovim
Construire un environnement de NGINX + NGINX Unit + MySQL avec Docker
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Créez un environnement WardPress sur AWS avec Pulumi
Créez simplement un environnement d'exécution Python 3 sous Windows
Construire un environnement Django sur Raspai (MySQL)
Créer un environnement Python sur Mac (Mountain Lion)
Créer un environnement de construction python3 avec Sublime Text3
Créez un environnement de développement Python sur votre Mac
Construire un environnement Python avec OSX Elcapitan
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Construire un environnement de développement Python sur Raspberry Pi
Créer un environnement d'exécution python avec VS Code
Construction d'un environnement d'analyse de données Python facile avec Windows10 Pro x VS Code x Docker
Créez un environnement de développement local avec WSL + Docker Desktop pour Windows + docker-lambda + Python
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
[Python] Construction de l'environnement OpenCV avec Docker (cv2.imshow () fonctionne également)
Créer un environnement Python d'apprentissage automatique sur Mac OS
De Kafka à KSQL - Construction d'environnement facile avec docker
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Créer un environnement de développement Python sur Mac OS X
Construire un environnement virtuel Python en utilisant venv (Django + MySQL ①)
Créez un environnement Python sur votre Mac en utilisant pyenv
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Construction facile de code C ++ avec CMake sur Docker
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Créez un environnement de développement avec Poetry Django Docker Pycharm
Comment créer un environnement Python sur Amazon Linux 2
Créer un environnement python3 avec ubuntu 16.04
Créer un environnement Python sur Windows
Préparer l'environnement python3 avec Docker
Construire un environnement python avec direnv
Construire un environnement Python avec Windows
Créer un environnement Python hors ligne
Créez un environnement de science des données de base (Jupyter, Python, R, Julia, bibliothèque standard) avec Docker.
OpenJTalk sur Windows10 (parler japonais avec Python depuis la construction de l'environnement)
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)