Bereitstellung mit nur SSH-Schlüssel und Dockerdatei

8

Entschuldigen Sie, dass meine Entwickler naiv sind, aber ich gehe davon aus, dass Sie nur einen geeigneten SSH-Schlüssel, einen zu entlarvenden Port, die IP-Adresse des Computers, eine Anmeldung und den zu deployenden Code bereitstellen müssen.

Gibt es also einfache Lösungen, die Code auf einem Remote-Server bereitstellen, bei dem nur ein SSH-Schlüssel, eine Docker-Datei und der Code selbst eingegeben werden? Ich denke, dass es in einer deterministischen (fast funktionalen) Art und Weise eingerichtet werden könnte, bei der die Eingabe die IP-Adresse des Servers, die Anmeldung und die Ausgabe ein laufender Server ist.

Ich habe versucht, Dokku auf Digital Ocean einzurichten ( Ссылка ) und das erfordert einen DNS-Record und Git. Ich brauche diese nicht als Abhängigkeiten.

Danke

    
GTDev 23.09.2015, 22:22
quelle

1 Antwort

1

Wenn ich Ihre Frage richtig verstehe, brauchen Sie nichts mehr als scp , ssh und ein paar Shell-Skripte.

Nehmen wir an, Sie möchten Ihren Code von serverA auf serverB bereitstellen.

Erstellen Sie auf serverB ein Verzeichnis mit Ihrer Dockerfile . Erstellen Sie auch ein Shell-Skript, nennen wir es build_image.sh , das Ihren Docker-Build-Befehl mit sudo ausführt.

Erstellen Sie außerdem auf serverB ein Shell-Skript, das Ihren Code (falls erforderlich) aus der Quelle erstellt.

Erstellen Sie abschließend unter serverB ein Shell-Skript, das Ihr Code-Build-Skript und Ihr Docker-Build-Skript aufruft und am Ende Ihr neues Docker-Image ausführt. Lassen Sie dieses Skript do_it_all.sh aufrufen.

Stelle sicher, dass du chmod 755 alle Shellskripte hast.

Nun haben Sie auf serverA ein Verzeichnis mit dem Quellcode. scp das Verzeichnis zu ServerB in das Verzeichnis mit dem Dockerfile .

Als Nächstes verwenden Sie von serverA ssh , um do_it_all.sh auf serverB aufzurufen. Dadurch wird Ihr Code erstellt, Ihr Image erstellt und ein Container bereitgestellt, ohne dass zusätzliche Software, Pakete, Git, DNS-Einträge usw. erforderlich sind.

Sie können diesen Prozess sogar automatisieren, indem Sie cron oder etwas anderes für nächtliche Bereitstellungen verwenden, wenn Sie dies wünschen, oder für Bereitstellungen unter anderen Bedingungen.

Beispielskripts / Befehle:

Auf ServerB:

build_image.sh:

%Vor%

build_code.sh (optional, passen Sie den Code an):

%Vor%

do_it_all.sh:

%Vor%

Auf serverA:

%Vor%

Das sollte es sein. Passen Sie für Ihr System an.

Um auf einem brandneuen System zu implementieren, schreiben Sie einfach ein Skript auf serverA , das ssh verwendet, um erforderliche Verzeichnisse auf ServerB ssh serverB 'mkdir /path/to/dockerfile' zu kopieren. Als nächstes kopieren Sie Ihre Dockerfile und Ihre Build-Skripte und Ihren Code von serverA zu serverB mit scp . Führen Sie dann do_it_all.sh auf serverB von serverA mit ssh .

aus     
keda 01.10.2015 22:55
quelle

Tags und Links