Skip to content

Commit

Permalink
step25
Browse files Browse the repository at this point in the history
  • Loading branch information
dbt1 committed Feb 5, 2024
1 parent 4269462 commit 4e6649b
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 34 deletions.
2 changes: 2 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
BUILDENV_VERSION=3.2.4

BUILD_ROOT=tuxbox
BUILDENV_GIT_URL=https://github.com/tuxbox-neutrino/buildenv.git
SSH_AUTHORIZED_KEYS=
Expand All @@ -13,3 +14,4 @@ GIT_USER=${USER}
GIT_EMAIL=${USER}@example.de
PATH=${USER_DIR}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LOCALE_LANG=de_DE.UTF-8
START_PATH=${USER_DIR}/${BUILD_ROOT}/build-${BUILDENV_VERSION}
2 changes: 1 addition & 1 deletion .github/workflows/readme.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Translate README
on:
push:
branches:
- 3.2.4
- master
paths:
- 'README-de.md'

Expand Down
15 changes: 9 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ ARG GIT_USER=${GIT_USER}
ARG GIT_EMAIL=${GIT_EMAIL}
ARG PATH=${PATH}
ARG LOCALE_LANG=${LOCALE_LANG}
ARG START_PATH=${START_PATH}

## Install Locales and set the desired Locale
RUN apt-get update && apt-get install -y locales && \
Expand Down Expand Up @@ -124,8 +125,9 @@ RUN mkdir -p /etc/service/sshd && \

## generate start script:
RUN echo "#!/bin/bash" > /usr/sbin/init.sh && \
echo "echo 'Initialize tuxbox-builder docker container...'" >> /usr/sbin/init.sh && \
echo "if [ ! -d ${USER_DIR}/${BUILD_ROOT}/build-${BUILDENV_VERSION}/.git ]; then" >> /usr/sbin/init.sh && \
echo "echo 'Initialize tuxbox-builder container...'" >> /usr/sbin/init.sh

RUN echo "if [ ! -d ${START_PATH}/.git ]; then" >> /usr/sbin/init.sh && \
echo " echo Cloning buildenv Repository from ${BUILDENV_GIT_URL}" >> /usr/sbin/init.sh && \
echo " git clone -b ${BUILDENV_VERSION} ${BUILDENV_GIT_URL} /tmp/build-${BUILDENV_VERSION}" >> /usr/sbin/init.sh && \
echo " rsync -a /tmp/build-${BUILDENV_VERSION} ${USER_DIR}/${BUILD_ROOT}/" >> /usr/sbin/init.sh && \
Expand All @@ -134,14 +136,15 @@ RUN echo "#!/bin/bash" > /usr/sbin/init.sh && \
echo " git config --global user.email ${GIT_EMAIL}" >> /usr/sbin/init.sh && \
echo " git config --global user.name ${GIT_USER}" >> /usr/sbin/init.sh && \
echo "else" >> /usr/sbin/init.sh && \
echo " echo 'Das Repository existiert bereits und ist nicht leer.'" >> /usr/sbin/init.sh && \
echo "fi" >> /usr/sbin/init.sh && \
echo "sed -i 's|@START_PATH@|'"${USER_DIR}/${BUILD_ROOT}/build-${BUILDENV_VERSION}"'|' /home/.bashrc" >> /usr/sbin/init.sh && \
echo " echo 'Repository [${START_PATH}] already exists. Not touched!'" >> /usr/sbin/init.sh && \
echo "fi" >> /usr/sbin/init.sh

RUN echo "sed -i 's|@START_PATH@|'"${START_PATH}"'|' /home/.bashrc" >> /usr/sbin/init.sh && \
echo "cp /home/.bashrc ${USER_DIR}/.bashrc" >> /usr/sbin/init.sh && \
echo "mkdir -p ${USER_DIR}/.ssh" >> /usr/sbin/init.sh && \
echo "echo ${SSH_AUTHORIZED_KEYS} > ${USER_DIR}/.ssh/authorized_keys" >> /usr/sbin/init.sh && \
echo "chown -R ${USER}:${USER_GROUP} ${USER_DIR}" >> /usr/sbin/init.sh && \
echo "echo 'Starte Dienste...'" >> /usr/sbin/init.sh && \
echo "echo 'Starting...'" >> /usr/sbin/init.sh && \
echo "exec runsvdir -P /etc/service" >> /usr/sbin/init.sh

## make start script executable
Expand Down
62 changes: 35 additions & 27 deletions README-de.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@

# Dockerized Environment

Dieses Repository enthält die notwendigen Dateien, um einen Dockercontainer konfigurieren und zu starten, einschließlich Docker Compose Konfigurationen, Umgebungsvariablen und Startskripte.
Dieses Repository enthält die notwendigen Dateien, um einen Dockercontainer zu konfigurieren und zu starten, einschließlich Docker Compose Konfigurationen, Umgebungsvariablen und Startskripte.
Die Verwendung dieses Dockerimages soll sichrstellen, dass keine Anpassungen an Deinem Hostsystem notwendig sind. Die Systemoraussetzungen, um Flashimages und Pakete mit dem Yocto/OE Buildsystem bauen zu können, sollen damit bereitgestellt werden. Der Vorteil gegenüber eine gewöhnlichen VM, liegt im Wesentlichen darin, dass man die Resourcen seines Hostsystem möglichst voll ausnutzen kann. VM's verbrauchen im Gegensatz dazu einen gewissen Teil der Resourcen für sich selbst und sind daher quasi ausgebremst.

## Voraussetzungen

- Docker
- Docker Compose >= v2.24.3 (für die Installation siehe: [https://github.com/docker/compose?tab=readme-ov-file#linux](https://docs.docker.com/compose/install/standalone/))
- Git (optional, für das Klonen diese Repositorys)
- Git

Getestet wurde unter Linxu Debian 11 und Ubuntu 20. Unter Windows aktuell nicht, würde ich auch nicht zwingend empfehlen.

## Schnellstart

Folge diesen Schritten, um den Container schnell zu starten:
Folge diesen Schritten, um den Container zu starten:

1. **Docker Image herunterladen**

Expand All @@ -32,62 +35,67 @@ Folge diesen Schritten, um den Container schnell zu starten:

3. **Umgebungsvariablen konfigurieren**

Passe die `.env` Datei an Deine spezifischen Bedürfnisse an. Diese Datei enthält Umgebungsvariablen, die von Docker Compose und vom Docker Container genutzt werden.
Prinzipell sollte die vorgegeben Konfugation schon ausreichen und Du kannst mit Schritt 3 fortfahren.

Die Hauptkonfigurationsdateien sind:

4. **Container mit Docker Compose starten**
- `docker-compose.yml`: Definiert Services, Netzwerke und Volumes für Ihre Container.
- `.env`: Enthält Umgebungsvariablen, die von Docker Compose und dem Docker Container genutzt werden.

Verwende Docker Compose, um den Container zu erzeugen und zu starten:
Stelle sicher, dass Du diese Dateien entsprechend Deiner Umgebung und Anforderungen anpasst.

```bash
docker-compose up -d
```
Passe die `.env` Datei an Deine spezifischen Bedürfnisse an. Diese Datei enthält Umgebungsvariablen, die von Docker Compose und vom Docker Container genutzt werden.

Dieser Befehl startet alle Services, die in der `docker-compose.yml` definiert sind, im Hintergrund.
**Ports**

## Konfiguration
Standardmäßig wird der Container so konfiguriert, dass die eingebauten Server auf folgenden Ports lauschen:

Die Hauptkonfigurationsdateien sind:
- Web-Zugriff: 8080 (Host) -> 80 (Container)
- SSH-Zugriff: 222 (Host) -> 22 (Container)

- `docker-compose.yml`: Definiert Services, Netzwerke und Volumes für Ihre Container.
- `.env`: Enthält Umgebungsvariablen, die von Docker Compose und dem Docker Container genutzt werden.
- `start.sh` und `init.sh`: Skripte, die beim Start des Containers ausgeführt werden, um die Container zu initialisieren.
Du kannst diese Einstellungen in der `docker-compose.yml` Datei anpassen.

Stelle sicher, dass Du diese Dateien entsprechend Deiner Umgebung und Anforderungen anpasst.
**Volumes**

## Ports
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 in Deinem persönlichen Ordner deines Hosts beim Starten des Containers eingehängt, so dass Du im Idealfall an der Volumes-Konfiuration nichts zu ändern brauchst.

Standardmäßig wird der Container so konfiguriert, dass er auf folgenden Ports lauscht:

- Web-Zugriff: 8080 (Host) -> 80 (Container)
- SSH-Zugriff: 222 (Host) -> 22 (Container)
4. **Container mit Docker Compose starten**

Du kannst diese Einstellungen in der `docker-compose.yml` Datei anpassen.
Verwende Docker Compose, um den Container zu erzeugen und zu starten:

## Volumes
```bash
docker-compose up -d
```

Dieser Befehl startet alle Services, die in der `docker-compose.yml` definiert sind, im Hintergrund.

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`.

## Unterstützung

Für weitere Fragen oder Unterstützung öffne ein Issue im GitHub Repository oder melde Dich im Forum.

## Wie wird der Container zum Bauen von Images genutzt?

Wenn der Container gestartet wurde, stellt dieser eine eigene Umgebeung bereit, die es ermöglicht extern über das Terminal darauf zu zugreifen, um quasi so damit zu arbeiten, als wäre man auf seinem Hostsystem. dabei werden die erzeugten Images und Pakete über persistente Volumes auf dem Host verfügbar gemacht. Der Terminalzugriff auf den Container erfolgt mittels eines herkömmlichen SSH-Zugangs.
Wenn der Container gestartet wurde, stellt dieser eine eigene Umgebung bereit, die es Dir ermöglicht über das SSH-Terminal auf den Container zu zugreifen.

```bash
ssh <USER>@localhost -p 222
```
Im Terminal solltest Du dich nach dem Einloggen bereits im Buildordner befinden. Diese Buildumgebung enthält bereits ein Repository der das buildenv-Script enthält. Du kannst quasi so damit arbeiten, als wäre man auf seinem Hostsystem und mit diesem Schritt fortfahren:

https://github.com/tuxbox-neutrino/buildenv/blob/3.2.4/README-de.md#2-init-skript-ausf%C3%BChren

Dabei werden die erzeugten Images und Pakete über persistente Volumes auf dem Host verfügbar gemacht. Der Terminalzugriff auf den Container erfolgt mittels eines herkömmlichen SSH-Zugangs.

Um die erzeugten auch über http zu Verfügung zu stellen, ist der gemappte Port 80 verfügbar. Über diesen Webzugriff ist der Webserver des Containers standardmäßig über diese Adresse rerreichbar
Um die erzeugten Pakete und Images auch über den Webserver des Containers zu Verfügung zu stellen, ist der Webserver des Containers standardmäßig über diese Adresse rerreichbar

```
http://localhost:8080
```
Gegebenfalls musst Du das Mapping dieser Ports anpassen, sofern diese Ports auf deinem System schon belegt sind.
Gegebenfalls musst Du das Mapping dieser Ports anpassen, für den Fall dass diese Ports auf deinem System schon belegt sind. Der Webserver ist so eingerichtet, dass er über ein Docker Volume auf das dist-Verzeichnis Zugriff hat, welches sich innerhalb der Buildumgebung befindet. Beim Webserver handelt sich um den leichtgewichtigen lighthttpd. Dieser sollte für Testzwecke oder im Heimnetz vollkommen ausreichen.

Sobald Du dich auf den Container über das Termial eingeloggt hast, solltest Du dich bereits im Buildordner befinden. Ab da ist die Vorgehensweise wie hier beschrieben ab Schritt 2:

```
https://github.com/tuxbox-neutrino/buildenv/blob/3.2.4/README-de.md#Image-bauen
Expand Down
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ services:
- GIT_EMAIL=${GIT_EMAIL}
- PATH=${PATH}
- LOCALE_LANG=${LOCALE_LANG}
- START_PATH=${START_PATH}
container_name: tuxbox-build
env_file: .env
#environment:
Expand Down

0 comments on commit 4e6649b

Please sign in to comment.