Mein Name ist Ryosuke Kamei und ich bin ein IT-Berater, der auf der Idee der "sanften IT" basiert! Derzeit mache ich in meiner Arbeit vorgelagerte Prozesse, die sich auf Anforderungsanalyse und Anforderungsdefinition konzentrieren, aber da ich auch andere Programme als mein Hauptgeschäft schreibe, werde ich technische Artikel schreiben! Im Rahmen unserer freundlichen IT-Aktivitäten werden wir die mit "Raspberry Pi 3" (allgemein bekannt als "Raspberry Pi 3") erstellten Waren- und Serviceprogramme vorstellen, die die Philosophie haben, "kostengünstige PCs bereitzustellen, die für Bildungszwecke programmiert werden können"!
Erstellen Sie mit Docker auf Raspai eine Python-MySQL-Umgebung. Eigentlich wollte ich es mit Docker-Compose starten, aber nur die Erstellung von Anwendungsservern und die SQL-Ausführung funktionierten nicht. Das Infrastrukturniveau ist immer noch niedrig. Entschuldigung. Ich denke jedoch, dass es eine Hilfe sein wird! Die in der Datenbank registrierten Daten setzen die von Raspeye erkannte Temperaturerfassung voraus.
Angenommen, Docker und Git sind auf Raspberry Pi installiert, können Sie ein Beispiel erstellen, indem Sie die folgenden Befehle der Reihe nach in einem beliebigen Ordner ausführen. Informationen zur Installation von Docker und Git finden Sie im folgenden Artikel. Installieren Sie Docker und Git auf RaspberryPi3
Ich möchte sehen, was sich bewegt! Wenn Sie wie ich ungeduldig sind, führen Sie die Befehle in der folgenden Reihenfolge in einem beliebigen Ordner von Raspberry Pi aus.
Ich habe es im Ordner / home / pi / Workspace überprüft.
Mit git klonen und die Datei herunterladen
$ git clone [email protected]:RyosukeKamei/rpi-python-bottle.git
Wechseln Sie in den geklonten Ordner
$ cd rpi-python-bottle
docker-Erstellen und starten Sie einen Datencontainer und einen Datenbankcontainer mit compose
$ docker-compose up -d
Überprüfen Sie das Bild
$ docker images
Überprüfen Sie den Behälter
$ docker ps -a
Melden Sie sich beim Datenbankcontainer an
$ docker exec -it rpi-python-bottle-db bash
Geben Sie Beispieltabelle und Daten ein
# mysql -u bottle -pbottle measurement < /docker-entrypoint-initdb.d/create_table.sql
Datenbankcontainer abmelden
# (Contrl + p, Control + q)
Anwendungscontainer erstellen
$ docker build -t hypriot/rpi-python .
Starten Sie den Anwendungscontainer und melden Sie sich an
$ docker run --name rpi-python-bottle-app -it hypriot/rpi-python bash
Starten Sie den Server
# /usr/local/bin/python3 /home/bottle/server.py
Wenn Sie es in einem Browser öffnen, wird es wie folgt angezeigt.
Lass es uns erklären!
Wenn Sie nicht über Docker oder eine Entwicklungsumgebung verfügen, lesen Sie bitte die folgenden Informationen. Wenn Sie Docker installiert haben, können Sie es überspringen!
Siehe Docker auf RaspberryPi3 installieren!
Es ist zweckmäßig, das folgende Kapitel von Raspberry Pi 3-Installation → WLAN → Japanische Ein- / Ausgabe → Betrieb vom Mac (SSH / VNC-Server / AFP) zu implementieren.
Git-Klon
pi@raspberrypi $ git clone [email protected]:RyosukeKamei/rpi-python-bottle.git
Bewegung
pi@raspberrypi $ cd rpi-python-bottle
docker-Beginnen Sie mit komponieren
pi@raspberrypi $ docker-compose up -d
3-2. docker-compose.yml Als Referenz wird docker-compose.yml beschrieben.
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 in docker-compose.yml: ./initdb.d:/docker-entrypoint-initdb.d Wenn Sie festlegen, wird die Datei direkt unter dem lokal platzierten Ordner "initdb.d" im Ordner "/docker-entrypoint-initdb.d" des Containers abgelegt, und die von SQL beschriebene Datei wird automatisch ausgeführt. Es sollte sein, aber es scheint nicht zu funktionieren ... Sie haben keine andere Wahl, als die Daten manuell zu erstellen.
Melden Sie sich beim Datenbankserver an
pi@raspberrypi $ docker exec -it rpi-python-bottle-db bash
Führen Sie die Datei aus, in die SQL geschrieben ist
root@{Container ID}:/# mysql -u bottle -pbottle measurement < /docker-entrypoint-initdb.d/create_table.sql
Hinweis Setzen Sie nach -p kein Leerzeichen. Der MySQL-Benutzername, das Kennwort und der Datenbankname werden in docker-compose.yml festgelegt. Dies ist eine vorübergehende Änderung. Ändern Sie sie daher aus Sicherheitsgründen.
Beenden Sie den Datenbankcontainer
root@{Container ID}:/# (Contrl + p, Control + q)
4-2. SQL Ich werde die SQL als Referenz veröffentlichen.
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;
Daten einfügen
mysql>
INSERT INTO `temperatures`
(`id`, `server_id`, `temperature`, `careted_at`, `careted_user`, `updated_at`, `updated_user`)
VALUES
(1, 1, 29, NOW(), 1, NOW(), 1);
Details werden in einem anderen Artikel erklärt.
Anwendungscontainer erstellen
pi@raspberrypi $ docker build -t hypriot/rpi-python .
Ich habe folgendes mit apt-get installiert.
Python-Bibliothek zur Installation mit pip3
Danach erstelle ich einen Benutzer und setze vim für Python.
Ursprünglich möchte ich, dass auch der Anwendungsserver gestartet wird, aber dies wurde nicht gestartet.
server.py wird lokal nach "/ home / Flasche" kopiert.
Starten Sie den Anwendungsserver und melden Sie sich an
pi@raspberrypi: $ docker run --name rpi-python-bottle-app -it hypriot/rpi-python bash
Überprüfen Sie, wo Sie sich angemeldet haben
# pwd
/home/bottle
Anwendungsstart
# /usr/local/bin/python3 /home/bottle/server.py
Wenn Sie es in einem Browser öffnen, wird es wie folgt angezeigt.
Das Programm wird als Referenz beschrieben.
server.Überprüfen Sie py (korrigieren Sie diese Datei, wenn es ein Problem gibt)
# vim server.py
server.py
#Flaschenbibliothek
from bottle import route, run, request
#MySQL-Treiber ist MySQL.connector
import mysql.connector
#Ergänzung
#Wenn Sie eine Vorlage einfügen, ist der HTML-Code tatsächlich wunderschön.
#Dieser Bereich wird später sein ...
#Die IP-Adresse des Hosts lautet$ docker inspect {Name des Datenbankcontainers}Finden Sie es heraus in
#MySQL-Benutzer, Passwörter und Datenbanken sind Docker-compose.Was wurde mit yml eingestellt
# 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():
#Temperatur anzeigen
cursor = connector.cursor()
cursor.execute("select `id`, `temperature`, `careted_at` from temperatures")
disp = "<table>"
#Header
disp += "<tr><th>ID</th><th>Temperatur</th><th>Registrierungsdatum</th></tr>"
#Teil auflisten
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 "Erhalten von DB"+disp
@route('/input_temperature')
def input_temperature():
#Temperatur eingeben
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 + ")")
#verpflichten
connector.commit();
cursor.close
return "OK"
#Schließen Sie den Stecker
connector.close
#Serverstart
run(host='0.0.0.0', port=8080, debug=True, reloader=True)
Die IP-Adressen des Anwendungsservers und des Datenbankservers können je nach Reihenfolge und Umgebung unterschiedlich sein. Verlassen Sie den Container und kehren Sie zu Raspeye zurück, um die IP-Adresse zu überprüfen.
Bestätigung der IP-Adresse
$ docker inspect {Containername oder Container-ID}
Es sollte eine IP-Adresse geben, also greifen Sie bitte über Ihren Browser darauf zu! Wenn Sie einen Datenbankfehler erhalten, ändern Sie die IP-Adresse der Datenbank server.py!
Wenn keine Daten vorhanden sind, sollte im Container ein MySQL-Fehler angezeigt werden. 4. Melden Sie sich beim Datenbankcontainer (MySQL) an und erstellen Sie Daten Bitte versuche es erneut!
Docker-Compose Es war kein einziger Schuss, aber ... Es scheint, dass Sie eine Docker + Python + Flasche + MySQL-Umgebung auf Raspeye erstellen können!
Raspberry Pi 3-Installation → WLAN → Japanische Ein- / Ausgabe → Betrieb vom Mac
Docker auf RaspberryPi3 installieren Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung![Einfache Konstruktion] Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung![Versuch und Irrtum]
Machen Sie einen in die Klimaanlage integrierten PC "airpi" mit Raspberry Pi 3!
Motor bewegt sich beim Drücken der Taste Motor bewegt sich, während der Magnet näher gebracht wird Der Motor bewegt sich, wenn der Magnet näher gebracht wird und stoppt automatisch
Programmieren mit Node-RED-Programmieren mit Raspberry Pi 3 und normaler Programmierung Beleuchten Sie die LED mit Python auf Raspberry Pi 3 (Hello World) Schalterstatus mit Raspberry Pi 3 erkennen Führen Sie einen Servomotor mit Python auf Raspberry Pi 3 aus Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3! Erkennen Sie den Schiebeschalter mit Python auf Raspberry Pi 3! Erkennen Sie Magnetschalter mit Python auf Raspberry Pi 3! Ermitteln Sie die Temperatur mit Python auf Raspberry Pi 3! Raspberry Pi 3 verwendet Python, um den Summer zu ertönen! Analoge Signale mit A / D-Wandler mit Python auf Raspberry Pi 3 erkennen! Erkennen Sie "Helligkeit" mit Python auf Raspberry Pi 3! Ermitteln Sie "Temperatur (mit A / D-Wandler)" mit Python auf Raspberry Pi 3! Ausgabe auf "7 Segment LED" mit Python auf Raspberry Pi 3! Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten! Verwenden Sie Python auf Raspberry Pi 3 und schalten Sie die LED ein, wenn es dunkel wird!
Codierungsregeln "Schreiben wir sanften Code" (FuelPHP) Namensregeln "Freundlich zu sich selbst, teamfreundlich und unsichtbare Mitglieder nach 3 Monaten"
PHP-Umgebung + Eclipse mit Docker mit Apache verknüpfen Erstellen einer PHP-Entwicklungsumgebung für Kraftstoff mit Docker Erstellen eines CRUD-Skeletts mit den Anfangseinstellungen der FuelPHP-Entwicklungsumgebung mit Docker und Scaffold Migration der FuelPHP-Datenbank
Recommended Posts