Als ich kürzlich eine Umgebung für "node" mit "docker-compose" erstellte, stieß ich auf ein Problem, dass "node_modules" im Container irgendwohin ging.
Nach vielen Recherchen scheint es, dass wenn ich das lokale Verzeichnis im Container mit "Docker-Compose" einbinde, es überschrieben wird und die "Knotenmodule" im Container verschwinden.
Wenn man sich Artikel wie https://qiita.com/suin/items/e53eee56da23d476addc ansieht, scheint es, dass dies vermieden werden kann, indem man dort "Volumes" erstellt und "node_modules" einbindet. In diesem Fall wird jedoch "node_modules" nicht in der lokalen Umgebung generiert, sodass die Typdefinition des Pakets nicht mit "TypeScript" referenziert werden kann und der Geschmack der Verwendung von "TypeScript" verringert wird.
Um dieses Problem zu lösen, können Sie auch "Garninstallation" mit dem Befehl "Docker-Compose" durchführen, um "Knotenmodule" in dem lokal gemounteten Container zu erstellen und "Knotenmodule" lokal zu haben. Ich habe einen Artikel gesehen, den ich mir ausgedacht habe. Bei dieser Methode wird "Garninstallation" jedoch ausgeführt, wenn "Docker-Compose-Up" ausgeführt wird, sodass "Docker-Compose-Up" eine angemessene Zeit in Anspruch nahm. (Es schien viel Zeit in Anspruch zu nehmen, um die "node_modules" lokal in den Container zu bringen.)
Deshalb habe ich versucht, es mit der folgenden Methode zu lösen. (Wenn diese Lösung schlecht ist, lassen Sie es mich bitte wissen und Sie werden lernen)
.
├── app
│ ├── Dockerfile
│ └── src
│ ├── package.json
│ └── yarn.lock
└── docker-compose.yml
Dockerfile
FROM node
WORKDIR /app
ADD src/package.json /app/
ADD src/yarn.lock /app/
RUN yarn install
docker-compose.yml
volumes: #← Hinzufügen
app_node_modules: #← Hinzufügen
services:
app:
image: ./app
volumes:
- ./app/src:/app/
- ./app/src/node_modules:/app/node_modules #← Hinzufügen
#Folgendes wird weggelassen
Bisher ist es dasselbe wie der Artikel unter https://qiita.com/suin/items/e53eee56da23d476addc. Darüber hinaus wird durch Ausführen des folgenden Skripts beim Hinzufügen eines Pakets (anstelle von "Docker-Compose-Build") auch "Knotenmodule" lokal generiert.
build.sh
docker-compose build
cd app/src && yarn install
Dies löste vorerst das Problem, dass node_modules
verschwand und das Problem, dass es keine Typdefinition gab.
Da jedoch davon ausgegangen wird, dass es in der lokalen Umgebung einen "Knoten" gibt, wünschte ich mir eine bessere Lösung. (Aber ich habe es nicht verstanden)
Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, ob es eine gute Lösung gibt.
Recommended Posts