Skip to content

Commit

Permalink
step55
Browse files Browse the repository at this point in the history
  • Loading branch information
dbt1 committed Feb 26, 2024
1 parent 83a12e8 commit 67c0e1c
Showing 1 changed file with 53 additions and 37 deletions.
90 changes: 53 additions & 37 deletions README-de.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@

Dieses Repository enthält die notwendigen Dateien, um einen Docker-Container zu konfigurieren, zu erzeugen und zu starten, einschließlich docker-compose.yaml, Dockerfile und Skripte. Einige Umgebungsvariablen werden in eine .env Datei hinterlegt, die mit einem Script erzeugt werden müssen, weil einige Einstellungen vom Host-System benötigt werden.
Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassungen an Deinem Hostsystem notwendig sind, um Flashimages und Pakete mit dem Yocto/OE Buildsystem bauen zu können.
Dieses Repository enthält die notwendigen Dateien, um einen Docker-Container zu konfigurieren, zu erzeugen und zu starten, einschließlich `docker-compose.yaml`, `Dockerfile` und Skripte. Einige Umgebungsvariablen werden in eine `.env`-Datei hinterlegt, die mit einem Script `create-env.sh` erzeugt werden muss, weil einige Einstellungen vom Host-System benötigt werden.
Alternativ ist auch eine `.env.default` vorhanden, die explizit beim Erzeugen und Starten des Containers an docker-compose übergeben werden muss.
Die Verwendung dieses Dockerimages soll helfen, Docker-Container zu erzeugen, die die notwendigen Voraussetzungen bereitstellen, um Flashimages und Pakete mit dem Yocto/OE Buildsystem bauen zu können.

## 1. Voraussetzungen

Getestet wurde unter Linxu Debian 11.x und Ubuntu 20.04. Es sollte aber auf jeder aktuellen Distribution laufen.
Getestet wurde unter Linux Debian 11.x und Ubuntu 20.04. Es sollte aber auf jeder aktuellen Distribution funktionieren.

Zwingend erforderlich:

Expand Down Expand Up @@ -40,45 +41,44 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge
./create-env.sh
```

Das Script holt einige Umgebungsvariablen vom Host-System und schreibt diese in eine .env-Datei, damit der Container passend zu Deinem Host-System synchronisiert wird. Sollten damit Deine Anforderungen damit noch nicht abgedeckt sein, kannst Du die .env-Datei noch anpassen.

**Tip!**

**Im Repository befindet sich ein Wrapper-Script, welches dieses Script automatisch vor Docker-Compose ausführt. Es reicht daher einfach dieses Script statt das native docker-compose aufzurufen. Um dieses Wrapper-Script aufzurufen, verwende:**

```bash
./docker-compose <sub commands and options>
```
Das Script holt einige Umgebungsvariablen vom Host-System und schreibt diese in eine .env-Datei, damit der Container passend zu Deinem Host-System synchronisiert wird. Sollten damit Deine Anforderungen damit noch nicht abgedeckt sein, verwende bitte eine eigene `.env`-Datei. Das Script solltest du dann aber nicht noch einnmal ausführen, da die `.env`-Datei sonst wieder überschrieben wird. Es ist daher ratsam, eine anders benannte .env-Datei zu verwenden und diese beim ausführen von `docker-compose` mit dem Parameter `--env-file <meine .env-Datei>` mitzugeben

### 2.3 Volumes

Der Container verwendet Docker Volumes, um persistente Daten zu speichern und Zugriff auf spezifische Dateien und Verzeichnisse im Container zu ermöglichen. Die Konfiguration der Volumes findest Du in der `docker-compose.yml`.
Prinzipell werden diese Volumes passend zu Deiner Umgebung deines Host-Systems eingebunden und beim Starten des Containers eingehängt, so dass Du im Idealfall an der Volumes-Konfiguration nichts zu ändern brauchst.

Die Buildumgebung und Daten, welche beim Imagebau erzeugt werden, findest du in Deinem Container sowie im Host unter diesem Standardpfad:
Die Buildumgebung und Daten, welche beim Imagebau erzeugt werden, findest du in Deinem Container sowie im Host innerhalb Deines home-Verzeichnisses unter diesem Standardpfad:

```bash
~/tuxbox
/home
├──<$USER>
├── tuxbox
```
Dieser Pfad wird durch die Umgebungsvariable `BUILD_ROOT` festgelegt. Änderbar in der .env-Datei

### 2.4 Ports
Dieser Pfad wird durch die Umgebungsvariable `BUILD_ROOT` festgelegt und ist in der `.env`-Datei änderbar. Du hast über den Host darauf normalen Zugriff.

#### 2.4.3 Portmapping anpassen
Insgesamt werden diese Pfade als Volumes in Deinem Home-Verzeichnis bereitgestellt. Du hast über den Host darauf ebenfalls normalen Zugriff:

Wenn Du mehrere Container nutzt, kann es notwendig sein, dass Du diese Ports anpassen musst. Das heißt beispielsweise, dass die Ports so gemappt werden könnten:

- 808**1**:80
- 22**3**:22
```bash
/home
├──<$USER>
├── tuxbox
├── Archive
├── bin
├── sstate-cache
```

### 2.4 Ports

#### 2.4.1 Webzugriff

Standardmäßig ist der Container so konfiguriert, dass der eingebaute Webserver (lighttpd) auf folgenden Port lauscht:
Standardmäßig ist der Container so konfiguriert, dass der eingebaute Webserver (`lighttpd`) auf folgenden Port lauscht:

- Port: 8080 (Host) -> 80 (Container)

Dieser Port ermöglicht den Zugriff via Webserver auf die erzeugten Images und Pakete (ipk's). Set-Top Boxen können damit direkt Updates beispielsweise aus Deinem Heimnetz abrufen. Falls der Port bei Dir bereits belegt ist, kannst Du diese Einstellungen entweder in der `docker-compose.yml` Datei anpassen oder beim Starten des Containers angeben.
Dieser Port ermöglicht den Zugriff via Webserver auf die erzeugten Images und Pakete (ipk's). Set-Top Boxen können damit direkt Updates beispielsweise aus Deinem Heimnetz abrufen. Falls der Port bei Dir bereits belegt ist, kannst Du diese Einstellungen entweder in der `docker-compose.yml` Datei anpassen oder beim Starten des Containers angeben. Wenn beispielsweise der Port 8080 schon belegt ist, könnte man den Port so anpassen:

- 808**1**:80

Zusätzliche Einstellungen am Webserver können hier vorgenommen werden:

Expand All @@ -88,7 +88,7 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge
└── lighttpd
└── lighttpd.conf.inc
```
In `lighttpd.conf.inc` Datei ist standardmäßig nur `dir-listing` aktiviert, so dass man ohne zusätzlichen Content auskommt.
In der `lighttpd.conf.inc` Datei ist standardmäßig nur `dir-listing` aktiviert, so dass man ohne zusätzlichen Content auskommt.

```bash
~/tuxbox/config/lighttpd$ cat lighttpd.conf.inc
Expand All @@ -98,10 +98,12 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge
#### 2.4.2 SSH

Üblicherweise greift man auf den Container direkt über `docker exec` zu.
Da Git zwangsläufig Bestandteil des Container ist, steht auch ssh im Container zur Verfügung. Der ssh-Server ist standardmäßig so konfiguriert:
Da Git zwangsläufig Bestandteil im Container ist, steht auch ssh zur Verfügung. Der ssh-Server ist standardmäßig so konfiguriert:

- Port: 222 (Host) -> 22 (Container)
- Passwort: = Benutzername (wie in .env festgelegt)

Falls der Port auch bereits belegt wäre, kannst Du diese Einstellungen ebenso wie beim Webserver in der `docker-compose.yml` Datei anpassen oder beim Starten des Containers angeben.

Einloggen vom Host-System selbst:

Expand All @@ -118,13 +120,27 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge
## 3. Container bauen

```bash
docker-compose build
./docker-compose build #(./ ist hier wichtig, da es sich um ein Wrapperscript handelt!)
```

mit anderer .env-Datei:

```bash
docker-compose --env-file <Pfad zur .env-Datei> build
```

## 4. Container starten

```bash
docker-compose up -d
./docker-compose up -d #(./ ist hier wichtig, da es sich um ein Wrapperscript handelt!)
```

mit anderer .env-Datei:

```bash
docker-compose --env-file <Pfad zur .env-Datei> up -d
```

## 5. Container stoppen

```bash
Expand All @@ -139,11 +155,11 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge

```bash
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6e0d280a9e dbt1/tuxbox-build:latest "/usr/local/bin/star…" 41 minutes ago Up 41 minutes 0.0.0.0:8080->80/tcp ecstatic_payne
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6e0d280a9e tuxbox-build:latest "/usr/local/bin/star…" 41 minutes ago Up 41 minutes 0.0.0.0:8080->80/tcp tuxbox-build
```

Logge dich wie hier beispielehaft in den Container mit der Container-ID **9d6e0d280a9e** oder dem Container Namen ein:
Logge dich wie hier beispielehaft in den Container mit der `Container-ID` **9d6e0d280a9e** oder dem `Container Namen` ein:

```bash
docker exec -it --user $USER 9d6e0d280a9e bash
Expand All @@ -152,20 +168,20 @@ Die Verwendung dieses Dockerimages soll helfen, dass so gut wie keine Anpassunge
Es sollte etwa dieses Prompt erscheinen:

```bash
<user>>@<docker-hostname>:~/tuxbox/build-3.2.4$
<user>@docker-tuxbox-build:~/tuxbox/build-3.2.4$
```

Sobald dies zur Verfügung steht, kannst du damit arbeiten.
Sobald dies zur Verfügung steht, kannst du mit dem Container arbeiten.

## 6.2. Bauen
## 6.2. Images bauen

Du befindest Dich hier bereits im Arbeitsverzeichnis, in welchem sich das Buildscript befindet. Von hier aus kannst du wie [hier](https://github.com/tuxbox-neutrino/buildenv/blob/master/README-de.md#2-init-skript-ausf%C3%BChren) beschrieben fortfahren.
Du befindest Dich nach dem Einloggen bereits im Arbeitsverzeichnis, in welchem sich das Buildscript befindet. Von hier aus kannst du wie [hier](https://github.com/tuxbox-neutrino/buildenv/blob/master/README-de.md#2-init-skript-ausf%C3%BChren) beschrieben fortfahren.


## 6.3. Images und Pakete abrufen

Die erzeugten Images und Pakete werden über persistente Volumes auf dem Host verfügbar gemacht. Jenachdem wie Du deine Volumes eingerichtet hast, sollten die erzeugten Images und Pakete über Dein Host zu finden sein.
Standardmäßig ist dafür beim erzeugen des Containers dieser Ort dafür vorgesehen:
Standardmäßig ist dafür beim erzeugen des Containers dieser Ort dafür vorgesehen:

```bash
~/tuxbox/build-3.2.4/dist
Expand Down

0 comments on commit 67c0e1c

Please sign in to comment.