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!
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.
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
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.
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!
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!
Voir Installer Docker sur RaspberryPi3!
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).
clone git
pi@raspberrypi $ git clone [email protected]:RyosukeKamei/rpi-python-bottle.git
Bouge toi
pi@raspberrypi $ cd rpi-python-bottle
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
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.
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);
Les détails seront expliqués dans un autre article.
Créer un conteneur d'application
pi@raspberrypi $ docker build -t hypriot/rpi-python .
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.
À l'origine, j'aimerais que le serveur d'applications démarre également, mais cela n'a pas commencé.
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
Lancement d'application
# /usr/local/bin/python3 /home/bottle/server.py
Lorsque vous l'ouvrez dans un navigateur, il s'affichera comme suit.
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)
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!
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!
Installation du Raspberry Pi 3 → LAN sans fil → Entrée / sortie japonaise → opération depuis Mac
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]
Faire un climatiseur intégré PC "airpi" avec 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
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 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"
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