Diskussion:Startumgebung erstellen/Containerbau: Unterschied zwischen den Versionen

(Schritt 3)
(Schritt 5)
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
 
===Schritt 1===
 
===Schritt 1===
 
* Die Dateien der Datenbank lassen sich als einfacher User nicht kopieren, da Benutzer und Gruppe auf 999 stehen. Also muss der root ran.
 
* Die Dateien der Datenbank lassen sich als einfacher User nicht kopieren, da Benutzer und Gruppe auf 999 stehen. Also muss der root ran.
 +
* Ordner /tmp leeren, Rechte auf alle Ordner auf 0777 setzen
 
* Zugriff per phpMyAdmin nicht vergessen.
 
* Zugriff per phpMyAdmin nicht vergessen.
 
* Zugriff für die neuen IP-Adressen konfigurieren
 
* Zugriff für die neuen IP-Adressen konfigurieren
  
 
===Schritt 2===
 
===Schritt 2===
Um mit einem Compose-Template zu arbeiten, das Variablen enthält, habe ich dies hier gefunden! Dazu kommt das Wissen, dass Umgebungsvariablen der Shell in der Compose-Datei ausgewertet werden können (habe ich beim Tester verwendet), dass man Umgebungsvariablen in der Compose-Datei zu Beginn setzen kann (damit kann man sie später in genau dieser Datei auch auswerten) und dass die Umgebungsvariablen an den Container selbst weiter gereicht werden, egal, wo sie gesetzt werden. Damit habe ich eine genügend flexible Möglichkeit, mit Templates für Container-Services zu arbeiten. Schließlich besteht auch noch die Möglichkeit, eine Datei anzugeben, die die Umgebungsvariablen enthält. was die Sache noch mächtiger macht. Siehe hier.
+
Um mit einem Compose-Template zu arbeiten, das Variablen enthält, habe ich dies hier gefunden (Mist, der Link ist verloren gegangen)! Dazu kommt das Wissen, dass Umgebungsvariablen der Shell in der Compose-Datei ausgewertet werden können (habe ich beim Tester verwendet), dass man Umgebungsvariablen in der Compose-Datei zu Beginn setzen kann (damit kann man sie später in genau dieser Datei auch auswerten) und dass die Umgebungsvariablen an den Container selbst weiter gereicht werden, egal, wo sie gesetzt werden. Damit habe ich eine genügend flexible Möglichkeit, mit Templates für Container-Services zu arbeiten. Schließlich besteht auch noch die Möglichkeit, eine Datei anzugeben, die die Umgebungsvariablen enthält. was die Sache noch mächtiger macht. Siehe hier (auch der Link ist weg).
  
 
====Container für die Infrastrukur====
 
====Container für die Infrastrukur====
 
Ausgangspunkt ist die Compose-Datei /vms/dockers/containers/infrastructure/run-joomla.yml.
 
Ausgangspunkt ist die Compose-Datei /vms/dockers/containers/infrastructure/run-joomla.yml.
  
* Kopie nach run-.yml, bearbeiten:
+
* Kopie nach run-(hier fehlt auch was).yml, bearbeiten:
 
* IP-Adressen sind in einem 8er-Netz, also +'''n'''*8 (1*8 ist schon belegt durch vm leer) für
 
* IP-Adressen sind in einem 8er-Netz, also +'''n'''*8 (1*8 ist schon belegt durch vm leer) für
 
** networks -subnet
 
** networks -subnet
Zeile 34: Zeile 35:
  
 
===Schritt 3===
 
===Schritt 3===
 +
Kontrollieren, ob die Variable
 +
 +
public $mailer = 'sendmail';
 +
wirklich auf ''sendmail'' steht. Oft steht sie auf ''smtp''.
 +
 
Folgende Variablen müssen in der ''configuration.php'' angepasst werden:
 
Folgende Variablen müssen in der ''configuration.php'' angepasst werden:
  
<pre>$host</pre>
+
<pre>$host</pre>
 +
auf den Namen des Services.
 +
 
 +
 
 
Folgende Variablen werden wegen des besseren Verständnisses und damit man die einzelnen Umgebungen besser auseinander halten kann, auch angepasst:
 
Folgende Variablen werden wegen des besseren Verständnisses und damit man die einzelnen Umgebungen besser auseinander halten kann, auch angepasst:
  
 
<pre>$sitename</pre>
 
<pre>$sitename</pre>
 +
Damit man (zum Beispiel im Video) sehen kann, in welcher Umgebung gerade getestet wird.
  
<pre>$user</pre>
+
<pre>$user </pre>
 +
Neuer User für die Datenbank. Muss auch in der Datenbank angelegt und mit Rechten ausgestattet werden. Dass hier jeweils ein eigener User verwendet wird, hat später den Vorteil, dass man mit phpMyAdmin aus dem Browser heraus mit jeweils eigenen Zugangsdaten arbeiten kann.
  
 
<pre>$mailfrom</pre>
 
<pre>$mailfrom</pre>
 +
Einfach auf das Netzwerk, der bei den Containern verwendet wird, anpassen.
  
 
<pre>$fromname</pre>
 
<pre>$fromname</pre>
 +
Suffix, das bei den Containern verwendet wird, zufügen
  
 
<pre>$smtphost</pre>
 
<pre>$smtphost</pre>
 +
Auf die IP des Mailservers dieses Netzwerkes anpassen
 +
 +
===Schritt 4===
 +
Mit diesen Befehl kann der neue Container von überall her gestartet werden:
 +
 +
docker-compose -f /vms/dockers/containers/infrastructure/run-bwpm.yml -p bwpmtests up -d
 +
 +
===Schritt 5===
 +
Zugriff brauchen die Container
 +
 +
* lokaler Host nach innen (die erste IP-Adresse im Bereich),
 +
* der Webserver (muss ja ausliefern können) und
 +
* der Tester (für Codeception).
 +
 +
Dazu habe ich noch
 +
 +
* den lokalen Server für den Zugriff per phpMyAdmin und
 +
* den lokalen Arbeitsplatz (man weiß ja nie).
 +
 +
Falls noch nicht geschehen muss man sich erst auf den Container der Datenbank verbinden:
 +
 +
docker exec -i -t mysqldbbwpm /bin/bash
 +
Dann geht es weiter mit
 +
 +
mysql -u root -p<br>(Passwort eingeben)<br>use mysql
 +
und
 +
 +
<pre>CREATE USER 'testerXXXXXXX'@'IP-Adresse' IDENTIFIED BY 'Passwort für Tester';
 +
GRANT ALL PRIVILEGES ON * . * TO 'testerXXXXXXX'@'IP-Adresse';<br>FLUSH PRIVILEGES;<br>QUIT;</pre>
 +
für alle benötigten IP-Adressen.
 +
 +
 +
Mit
 +
 +
exit
 +
den Container wieder verlassen.

Aktuelle Version vom 27. April 2017, 21:04 Uhr

Flexible Container

Schritt 1

  • Die Dateien der Datenbank lassen sich als einfacher User nicht kopieren, da Benutzer und Gruppe auf 999 stehen. Also muss der root ran.
  • Ordner /tmp leeren, Rechte auf alle Ordner auf 0777 setzen
  • Zugriff per phpMyAdmin nicht vergessen.
  • Zugriff für die neuen IP-Adressen konfigurieren

Schritt 2

Um mit einem Compose-Template zu arbeiten, das Variablen enthält, habe ich dies hier gefunden (Mist, der Link ist verloren gegangen)! Dazu kommt das Wissen, dass Umgebungsvariablen der Shell in der Compose-Datei ausgewertet werden können (habe ich beim Tester verwendet), dass man Umgebungsvariablen in der Compose-Datei zu Beginn setzen kann (damit kann man sie später in genau dieser Datei auch auswerten) und dass die Umgebungsvariablen an den Container selbst weiter gereicht werden, egal, wo sie gesetzt werden. Damit habe ich eine genügend flexible Möglichkeit, mit Templates für Container-Services zu arbeiten. Schließlich besteht auch noch die Möglichkeit, eine Datei anzugeben, die die Umgebungsvariablen enthält. was die Sache noch mächtiger macht. Siehe hier (auch der Link ist weg).

Container für die Infrastrukur

Ausgangspunkt ist die Compose-Datei /vms/dockers/containers/infrastructure/run-joomla.yml.

  • Kopie nach run-(hier fehlt auch was).yml, bearbeiten:
  • IP-Adressen sind in einem 8er-Netz, also +n*8 (1*8 ist schon belegt durch vm leer) für
    • networks -subnet
    • services: Datenbank
    • services: Mailserver
    • services: Webserver
  • Umbenennen, damit die Infrastrukturen auch parallel laufen können:
    • Networks, auch
      • Services
      • Domainname
    • Services selbst, dazu jeweils
      • Containername
      • Hostname
  • links und depends_on in Service Webserver anpassen auf neuen Service-Namen der Datenbank
  • ports, linke Seite erhöhen um n*1
  • volumes Pfad auf den neuen Pfad anpassen

Container für den Tester

Ausgangspunkt ist die Compose-Datei /vms/dockers/containers/testers/simple-joomla.yml.

Hier sind praktisch dieselben Anpassungen zu machen wie bei den Containern für die Infrastruktur.

Schritt 3

Kontrollieren, ob die Variable

public $mailer = 'sendmail';

wirklich auf sendmail steht. Oft steht sie auf smtp.

Folgende Variablen müssen in der configuration.php angepasst werden:

$host

auf den Namen des Services.


Folgende Variablen werden wegen des besseren Verständnisses und damit man die einzelnen Umgebungen besser auseinander halten kann, auch angepasst:

$sitename

Damit man (zum Beispiel im Video) sehen kann, in welcher Umgebung gerade getestet wird.

$user 

Neuer User für die Datenbank. Muss auch in der Datenbank angelegt und mit Rechten ausgestattet werden. Dass hier jeweils ein eigener User verwendet wird, hat später den Vorteil, dass man mit phpMyAdmin aus dem Browser heraus mit jeweils eigenen Zugangsdaten arbeiten kann.

$mailfrom

Einfach auf das Netzwerk, der bei den Containern verwendet wird, anpassen.

$fromname

Suffix, das bei den Containern verwendet wird, zufügen

$smtphost

Auf die IP des Mailservers dieses Netzwerkes anpassen

Schritt 4

Mit diesen Befehl kann der neue Container von überall her gestartet werden:

docker-compose -f /vms/dockers/containers/infrastructure/run-bwpm.yml -p bwpmtests up -d

Schritt 5

Zugriff brauchen die Container

  • lokaler Host nach innen (die erste IP-Adresse im Bereich),
  • der Webserver (muss ja ausliefern können) und
  • der Tester (für Codeception).

Dazu habe ich noch

  • den lokalen Server für den Zugriff per phpMyAdmin und
  • den lokalen Arbeitsplatz (man weiß ja nie).

Falls noch nicht geschehen muss man sich erst auf den Container der Datenbank verbinden:

docker exec -i -t mysqldbbwpm /bin/bash

Dann geht es weiter mit

mysql -u root -p
(Passwort eingeben)
use mysql

und

CREATE USER 'testerXXXXXXX'@'IP-Adresse' IDENTIFIED BY 'Passwort für Tester';
GRANT ALL PRIVILEGES ON * . * TO 'testerXXXXXXX'@'IP-Adresse';<br>FLUSH PRIVILEGES;<br>QUIT;

für alle benötigten IP-Adressen.


Mit

exit

den Container wieder verlassen.