2017-01-05 4 views
1

Ich habe einen Node Docker Container, auf dem ich einen Dev-Server laufen lasse.Ist es möglich, auf den Eingangsbefehl bash auf einem laufenden Docker-Container zuzugreifen?

In meiner Docker-compose.yml Datei, wird der Eintrag Befehl lautet:

... 
command: start-dev-server 
... 

Wo Start-dev-Server auf ein Skript, das den Server nach einem Anbieter beginnt installieren:

// /usr/local/bin/start-dev-server 
#!/usr/bin/env bash 

# install node modules if missing 
npm i 
# start the dev server 
npm run start 

Also, wenn ich meinen Container starte, wird der Server auch starten.

Ich weiß, dass ich meinen Container in bash über den folgenden Befehl aufrufen:

docker exec -it my-container bash 

Aber da kann ich nicht meine Server stoppen oder neu zu starten. Gibt es eine Möglichkeit, mit dem gestarteten Befehl auf den ssh zuzugreifen? (um zum Beispiel die Serverprotokolle anzuzeigen oder um & zu stoppen, starten Sie es neu).

Vielleicht nehme ich es hier falsch, weil der Eingangsbefehl nicht gestoppt werden soll? Also in diesem Fall hätte jemand eine Lösung, die es mir erlauben würde, meinen Server & es flexibler zu steuern?

+0

Die Best Practices sagen, dass Sie den Container als Ihren Server sehen sollten. Wenn Sie es stoppen möchten, stoppen Sie den Container, wenn Sie ihn neu starten möchten, starten Sie den Container neu. Ihr Server sollte sich auf 'stdout' einloggen, damit Sie die Logs mit' docker logs my-container' sehen können. Sie haben also Recht, der Befehl soll nicht gestoppt werden, da er den Container stoppt. Um eine Lösung vorzuschlagen, was meinst du, wenn du sagst "kontrolliere es auf flexiblere Weise"? – charli

+0

Eigentlich ist der Befehl docker logs -f mein-Container ist völlig was ich wollte und in der Tat, um den Server zu stoppen und neu zu starten, muss ich nur Docker-Befehle verwenden. Ich habe gerade die Option -f für den Befehl logs verpasst, mit dem ich die Logs live sehen kann! Danke, mein Herr, Sie können mit Ihrem Kommentar antworten und ich werde Ihre Antwort akzeptieren! – jiboulex

+0

Danke! Ich habe die Docker-Befehle und einen Link zu den Best Practices von Docker hinzugefügt – charli

Antwort

2

Die best practices besagt, dass Sie den Container als Ihren Server sehen sollten. Wenn Sie den Vorgang stoppen möchten, stoppen Sie den Container (docker stop my-container). Wenn Sie ihn erneut starten möchten, starten Sie den Container neu (docker restart my-container). Ihr Server sollte sich auf stdout anmelden, damit Sie die Protokolle mit docker logs -f my-container sehen können. Sie haben also Recht, der Befehl soll nicht gestoppt werden, da er den Container stoppt.

Verwandte Themen