Toller Start!
können Sie überprüfen, wie ich diese Docker/NodeJS/Typescript starter project
Als eine andere Antwort bemerkte in meinem GitHub zu erreichen, sollten Sie nur ein CMD
Befehl verwenden, so dass anstelle der Verwendung der CMD, sollten Sie RUN sh -c tsc webApp.ts
verwenden. Dadurch wird das Typescript mithilfe des Befehlszeilentools tsc
kompiliert, das Sie zuvor mithilfe von RUN npm install -g typescript
im Container installiert haben.
Nachdem Sie dies getan und Ihre Dockerfile ausgeführt haben, können Sie erwarten, webApp.js
jetzt in Ihrem Arbeitsordner (der Ordner, der Ihre Dockerfile hostet) zu sehen, aber Sie werden es nicht sehen. Der Container sieht es, aber Sie nicht. Was ist los?
Wenn Sie diese Befehle von Ihrer Dockerfile ausführen, führen Sie sie tatsächlich in dem Container aus, der in einem speziellen, abgelegenen Teil Ihres Rechners lebt. Dieser abgelegene Teil Ihrer Maschine und der Teil Ihrer Maschine, auf dem sich die Dockerfile befindet, sind zwei völlig getrennte Orte. Daher werden Sie die generierte .js
Datei nicht sehen.
Zum Glück hat Docker eine Möglichkeit, Dateien zwischen diesen beiden Teilen Ihres Computers zu "mounten" oder zu spiegeln. Dies nennt man "volume".
Es gibt eine gute StackOverflow answer auf Bänden. Die Volume-Syntax ist in Ihrer Dockerdatei wie folgt: ADD . /path/inside/docker/container
. Der Befehl ist folgendermaßen aufgebaut: ADD {my_filepath} {container_filepath}. Dies bedeutet, dass alles, was sich auf Ihrem Rechner in {my_filepath} befindet, jetzt im Pfad {container_filepath} in den Container "eingebunden" oder gespiegelt wird.
ADD . .
würde Ihr aktuelles Arbeitsverzeichnis in das Hauptarbeitsverzeichnis des Containers mounten.
Es tut mir leid, dass Ihre Methode nicht funktioniert hat. Es ist nicht das Problem des Befehlsformats, ich weiß nicht wie, aber die andere Antwort funktioniert für mich. Trotzdem danke für deine Freundlichkeit. – Andy
Ja, die Antwort von Nguyen Sy Thanh Son ist richtig. Die CMD wird von den anderen überschrieben – Julian