Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Einfache Konstruktion]

Einführung

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"!

Zweck

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.

Annahme

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

Bewegen Sie sich vorerst

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.

Bewegung

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!

Inhaltsverzeichnis

  1. Vorbereitung
  2. Git klonen eine Reihe von Dateien
  3. Beginnen Sie mit Docker-Compose
  4. Melden Sie sich beim Datenbankcontainer (MySQL) an und erstellen Sie Daten
  5. Erstellen Sie den Anwendungscontainer
  6. Anwendungsservereinstellungen

1. Vorbereitung

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!

1-1 Installieren Sie Docker

Siehe Docker auf RaspberryPi3 installieren!

1-2. Bequeme Funktionen (SSH / VNC / AFP)

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.

  1. Zugriff per SSH
  2. VNC-Einstellungen (Raspeye vom Mac mit GUI bedienen)
  3. AFP-Einstellungen (Zugriff auf das Raspai-Dateisystem auf dem Mac)

2. Git klonen eine Reihe von Dateien

Git-Klon


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

Bewegung


pi@raspberrypi $ cd rpi-python-bottle

3. Starten Sie die Datenbank und den Datencontainer mit Docker-Compose

3-1. Beginnen Sie mit Docker-Compose

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

4. Melden Sie sich beim Datenbankcontainer (MySQL) an und erstellen Sie Daten

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.

4-1. Vorgehensweise

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);

5. Erstellen Sie den Anwendungscontainer

Details werden in einem anderen Artikel erklärt.

5-1. Erstellen Sie den Anwendungscontainer aus Dockerfile

Anwendungscontainer erstellen


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

5-2. Installiert

Ich habe folgendes mit apt-get installiert.

Python-Bibliothek zur Installation mit pip3

Danach erstelle ich einen Benutzer und setze vim für Python.

6. Anwendungsservereinstellungen

Ursprünglich möchte ich, dass auch der Anwendungsserver gestartet wird, aber dies wurde nicht gestartet.

6-1 Überprüfen Sie server.py

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

6-2 Starten Sie die Anwendung

Anwendungsstart


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

6-3 Überprüfen Sie mit dem Browser

Wenn Sie es in einem Browser öffnen, wird es wie folgt angezeigt. ブラウザで確認

6-4. Plugram server.py

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)

6-5. Wenn nicht angezeigt

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!

Schließlich

Docker-Compose Es war kein einziger Schuss, aber ... Es scheint, dass Sie eine Docker + Python + Flasche + MySQL-Umgebung auf Raspeye erstellen können!

Seitenverzeichnis

Raspberry Pi 3 Setup

Raspberry Pi 3-Installation → WLAN → Japanische Ein- / Ausgabe → Betrieb vom Mac

Erstellen Sie mit Docker eine Python + MySQL-Umgebung auf Raspberry Pi 3!

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!

Machen Sie einen in die Klimaanlage integrierten PC "airpi" mit Raspberry Pi 3!

Endlich ... Erstellen Sie einen Funkcontroller mit Python auf 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

Lass uns mit Raspberry Pi 3 und Python Record of Raspberry kämpfen

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!

Die Regeln konzentrierten sich auf die testgetriebene Entwicklung

Codierungsregeln "Schreiben wir sanften Code" (FuelPHP) Namensregeln "Freundlich zu sich selbst, teamfreundlich und unsichtbare Mitglieder nach 3 Monaten"

Entwicklung von Webanwendungen mit Docker + Python

Installieren Sie Python3 und verwandte Bibliotheken pip, virtualenv und Framework Django, Flasche, Flask unter CentOS auf Docker! Mit einer Docker-Datei, die diese zusammenfasst!

Einfach zu entwickelnde Umgebungskonstruktion (Docker + PHP)

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

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]
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Erstellen Sie eine Python3-Umgebung unter CentOS7
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
Erstellen Sie eine Python-Umgebung unter MacOS (Catallina)
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie eine Python + OpenCV-Umgebung in Cloud9
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie mit Docker eine Umgebung aus NGINX + NGINX Unit + MySQL
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Erstellen Sie einfach eine Python 3-Ausführungsumgebung unter Windows
Erstellen Sie eine Django-Umgebung auf Raspai (MySQL)
Erstellen Sie eine Python-Umgebung auf einem Mac (Mountain Lion)
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
Einfache Erstellung einer Python-Datenanalyseumgebung mit Windows 10 Pro x VS Code x Docker
Erstellen Sie eine lokale Entwicklungsumgebung mit WSL + Docker Desktop für Windows + Docker-Lambda + Python
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (3) GVim8.0 und Python3.6
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
[Python] OpenCV-Umgebungskonstruktion mit Docker (cv2.imshow () funktioniert auch)
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Von Kafka bis KSQL - Einfache Umgebungskonstruktion mit Docker
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (1)
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
Erstellen Sie eine virtuelle Python-Umgebung mit venv (Django + MySQL ①)
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Einfache Erstellung von C ++ - Code mit CMake auf Docker
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Erstellen Sie eine Python3-Umgebung mit Ubuntu 16.04
Erstellen Sie eine Python-Umgebung unter Windows
Bereiten Sie die Python3-Umgebung mit Docker vor
Erstellen Sie mit direnv eine Python-Umgebung
Erstellen Sie eine Python-Umgebung mit Windows
Erstellen Sie die Python-Umgebung offline
Erstellen Sie mit Docker eine grundlegende Data Science-Umgebung (Jupyter, Python, R, Julia, Standardbibliothek).
OpenJTalk unter Windows 10 (Sprechen Sie Japanisch mit Python aus der Umgebungskonstruktion)
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)