assistant: Um sicher zu stellen dass der Container ständig läuft können sie die Restart policy von docker verwenden. Fügen sie dem run befehl
einen der folgenen Parameter hinzu:

```
--restart always
```
Dies sorgt dafür dass der Docker Container jedes mal neu gestartet wird wenn er beendet wird. Auch nach einem Systemneustart wird der container erneut gestartet

```
--restart  on-failure
```
Dies sorgt dafür dass der Docker Container neu gestartet wird wenn er sich mit einem Fehler beendet.  Optional können sie ```on-failure:[anzahl neustarts]``` verwenden um die Anzahl der felgeschlagenen starts festzulegen.

```
--restart unless-stopped
```
Funktoniert wie die Option always mit der außnahme das ein manuell gestoppter Container nicht neu gestartet wird.


Ich hoffe ich konnte ihnen helfen. Haben sie noch weitere Fragen?

assistant: Um sicherzugehen, dass der Container ständig läuft und Ausfallzeiten minimiert wird die Restart Policie des Containers gesetzt:

|**Policie**|**Auswirkung**|
|---|---|
| **no** | Den Container nicht automatisch neu starten, wenn er beendet wird. Dies ist die Voreinstellung. |
| **on-failure[:max-retries]** |Neustart nur, wenn der Container mit einem Exit-Status ungleich Null beendet wird. Begrenzen Sie optional die Anzahl der Neustartversuche, die der Docker-Daemon unternimmt. |
| **always** | Der Container wird immer neu gestartet, unabhängig vom Exit-Status. Wenn Sie always angeben, versucht der Docker-Daemon, den Container unbegrenzt neu zu starten. Der Container wird auch immer beim Start des Daemons gestartet, unabhängig vom aktuellen Status des Containers. |
| **unless-stopped** | Der Container wird immer neu gestartet, unabhängig vom Exit-Status, auch beim Start des Daemons, außer wenn der Container in einen gestoppten Zustand versetzt wurde, bevor der Docker-Daemon gestoppt wurde. |

Es ist also sinnvoll, den Container mit der Restart Policie `always` oder `unless-stopped` via `--restart` zu starten damit der Container auch nach einem Ausfall sofort wieder gestartet wird.
In diesem Befehl:
```
docker run --detach --hostname <hostname> \
    --publish 443:443 --publish 80:80 --publish 22:22  \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab  \
    gitlab/gitlab-ce:latest
```
Ist die Restart Policie bereits als `always` definiert.

assistant: Sie können  ein gitlab Image direkt vom DockerHub installieren. Dazu  müssen die GITLAB_HOME umgebungs variable setzen. Dies ist der Pfad im Hostsystem an dem die Persistenten Daten gespeichert werden sollen.
```
export GITLAB_HOME=/srv/gitlab
```
Nun können sie mit:
```
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest
```
eine gitlab instanz Starten.

```
--hostname gitlab.example.com
```
Gibt den Hostnamen an unter dem GitLab erreichbar seien soll.
```
--publish 443:443 --publish 80:80 --publish 22:22 
```
Veröffentlicht die Ports 443 (https), 80 (http), 22 (ssh) um von außerhalb des Containers erreichbar zu sein.

```
--restart always 
```
 Startet den Container nach einem Neustart wider.

prompter: Jetzt möchte ich das Gitlab auf einer URL wie zum Beispiel https://example.com/gitlab einbinden. Dabei soll example.com weiterhin eine statistische Website sein. Ich glaube wir benutzen nginx um die statische Seite zu auszuliefern.