IT Projekte / Home Lab / Smart Home / Games

Allgemein, Discord, Docker

Discord Bot mit Python im Docker Container betreiben 2025

Benutze Docker, um Deinen Discord Bot in einem Docker Container auf z. B. einem Raspberry Pi laufen zu lassen.

In diesem kurzen Tutorial zeige ich, wie Du ein eigenes Python Docker Image erstellt.

Du benötigst Folgendes:

  • Docker

Erstelle eine Datei DockerFile

Erstelle eine neue Datei in Deinem Programmordner und nenne sie DockerFile.

Dein Programm
|
|- assets
|  |
|  - randomFile.py
|- main.py
|- DockerFile

DockerFile Aufbau

Wie ist Dein DockerFile aufgebaut? Was brauchst Du?

Damit ein Python-Programm in Deinem Docker-Container ausgeführt werden kann, muss Dein Docker-Image das Python-Image enthalten. Füge es also mit einem FROM zu Deinem DockerFile hinzu.

FROM python:3.11

Wie fügst Du Deine Python Dateien Deinem Container zu?

Zunächst gebe ich immer an, in welchem Ordner ich mich im Docker Image befinde und wo die Dateien liegen. Hierzu nutze WORKDIR. In diesem Falle wäre es dann /app

FROM python:3.11

WORKDIR /app

Mit COPY kannst Du Deine Python-Dateien, aber auch Ordner und alle anderen Dateien zu Deinem Docker-Image hinzufügen. In diesem Fall kopierst Du die Dateien und Ordner eins zu eins in Dein Docker-Image.

FROM python:3.11

WORKDIR /app

COPY main.py /app/main.py
COPY assets /app/assets

Füge eine Datei requirements.txt bei. In dieser Datei werden alle Bibliotheken aufgelistet, die in Deinem Projekt benötigt werden. Zum Beispiel:

py-cord==2.6.1

Deine DockerFile-Datei sollte dann so aussehen:

FROM python:3.11

WORKDIR /app

COPY main.py /app/main.py
COPY assets /app/assets

COPY requirements.txt /app/

Da die Python-Version im Docker-Image nicht immer auf dem neuesten Stand sein kann und auch die zusätzlichen Bibliotheken aus der Datei requirements.txt installiert werden müssen, gibt es folgende Befehle: Einmal upgrade pip, um auf dem neuesten Stand zu sein und install requirments.txt, um die fehlenden Bibliotheken zu installieren.

FROM python:3.11

WORKDIR /app

COPY main.py /app/main.py
COPY assets /app/assets

COPY requirements.txt /app/

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

Zum Schluss, musst Du nur noch Deine main.py-Datei ausführen, das geht ganz einfach mit einem CMD-Befehl.

FROM python:3.11

WORKDIR /app

COPY main.py /app/main.py
COPY assets /app/assets

COPY requirements.txt /app/

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD [ "python", "./main.py" ]

Docker Image bauen – docker build

Nun, da Dein DockerFile gebaut wurde, kannst Du in dem Ordner, in dem sich Dein DockerFile befindet, die Kommandozeile / CMD / Terminal öffnen und einen docker-build Befehl ausführen.

docker build -t <Image-Name>:<Image-Version> <Pfad>

docker build -t meinImage:v1.0 .

Der Einfachheit halber wird hier das Image für genau die Plattform erstellt, auf der der Befehl ausgeführt wurde. Mit Plattform ist die Architektur der CPU gemeint. Hier gibt es verschiedene Varianten wie z.B. linux/amd64, linux/arm/v5, linux/arm/v7, linux/arm64/v8, windows/amd64 und viele mehr.

Docker Container bauen – docker run

Führe abschließend Deinen selbst erstellten Container aus.

docker run --name meinContainer meinImage:v1.0

Fazit

Wie man sieht, ist es recht einfach, sein Python-Programm von einem Discord-Bot in einen Docker-Container umzuwandeln. Die Vorteile überwiegen meiner Meinung nach deutlich. Du kannst Deinen Discord Bot mithilfe des Docker Images überall einsetzen. Unabhängig vom Host Betriebssystem. Er ist in seiner Umgebung isoliert und von anderen Anwendungen abgeschnitten.

Quellen
  • https://www.docker.com/blog/docker-best-practices-understanding-the-differences-between-add-and-copy-instructions-in-dockerfiles/ (05.04.2025 22:00)
  • https://docs.docker.com/reference/dockerfile/ (05.04.2025 22:05)

Schreibe eine Antwort