2016-08-16 3 views
2

Ich benutze Docker, um eine Nginx-Umgebung zu bauen. Ich frage mich, ob es möglich ist, die Ports (80, 443) während des Builds zu veröffentlichen, so dass Letsencrypt zur Build-Zeit ausgeführt werden kann (es benötigt Netzwerkzugriff auf einen Server im (Zwischen-) Container).Docker veröffentlichen Ports während Build

Ist das möglich?

+0

Sie wollen wirklich nicht das cert in das Bild setzen;) – Auzias

+1

Ich stimme zu, wenn Sie Te Image veröffentlichen würde. Es macht jedoch Sinn, nur einen Datencontainer dafür zu verwenden. Ich kann mir aber immer noch Anwendungsfälle vorstellen, in denen das Veröffentlichen der Ports während des Builds nützlich wäre (oder das Übergeben einer Docker-Ausführungsoption an die Zwischencontainer, die mit Build ausgeführt werden). –

+0

Ich sprach über das Zertifikat, nicht den Veröffentlichungs-Port. Nun ... Nehmen wir an, das Docker-Image kann einen bestimmten Port (der zur Build-Zeit festgelegt wird) zur Verwendung zwingen. Was soll ich tun, wenn ich bereits einen laufenden Dienst an diesem bestimmten Port habe? Oder wenn dieser bestimmte Port Firewall ist? IMO sollten alle Dienste erlauben, den Standardport zu ändern. – Auzias

Antwort

3

Ich habe das nie gesehen, und ich denke, das ist nicht durch das Design möglich.

  • Sie sollten nicht den geheimen Schlüssel in das Bild platzieren
  • Unter Umständen müssen Sie die Lizenz nach 2 Monaten wieder zu versichern und würde das ganze Bild

im Allgemeinen neu erstellen müssen, ist dies getan mit einem Begleiter letsencrypt Docker Bild, manchmal Sidekick genannt. Sie haben grundsätzlich Ihre App (und ihre Container) und einen letsencrypt-Container, der ein Volume freigibt, das nginx dann unter Verwendung von volume_from einbindet. Dieses Volume ist, wo der letsencrypt-Container die abgerufenen Zertifikate ablegt. Dies geschieht während des Bildstarts, nicht während der Bilderstellung. Sie verwenden eine docker-compose-Datei, um alles Notwendige zu konfigurieren.

z. Sie können hier a) https://github.com/rancher/community-catalog/blob/master/templates/letsencrypt/2/docker-compose.yml b) oder http://letsencrypt.readthedocs.io/en/latest/using.html#running-with-docker

einen Blick

a) können Sie die Domänen definiert Sie mit ENV Variablen gehen zu müssen, die sehr gut eine Docker-compose Weise wird Hotel, keine Dateien bereitstellt wie eine Konfiguration auf dem Host (hält es tragbar).

Sie können immer noch all dies auf dem Nginx-Server setzen, aber es ist einfach nicht Best Practice, aus vielen Gründen (z. B. die Notwendigkeit, Nginx zu konfigurieren).


Wenn Sie bleiben wollen „Zeit bauen“, eine Alternative ist mit der DNS-Modus überprüfen, so dass anstelle der Überprüfung auf einem Port anschließen Rück, überprüfen Sie lieber einen DNS-Eintrag verwenden, einige Links für die - https://github.com/lukas2511/letsencrypt.sh/wiki/Examples-for-DNS-01-hooks - die a) Behälter dieses

für dieses Szenario ist Sie http://cloudflare.com holen möchten - AFAIK ist es der einzige DNS-Dienst mit Zugriff kostenlose API für unbegrenzte Domains, alles andere entweder kostet Geld oder hat Grenzen .

Verwandte Themen