Ich habe einen sehr einfachen Code-Basis wie folgtWie Host-Codes in Docker Container anhängen?
Dockerfile
docker-compose.yml
package.json
server.js
Meine Docker Datei
FROM node:alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD ["npm", "start"]
Meine Docker compose Datei
version: "3"
services:
web:
build: .
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- "3000:3000"
depends_on:
- postgres
postgres:
image: postgres:9.6-alpine
ports:
- 5432:5432
Ich kann docker-compose up
erfolgreich aufzubauen und zu tun, aber ich habe Problem mounten Sie meinen Quellcode an den Container (dh wenn ich meine server.js
bearbeite und den Browser aktualisiere, ändert es sich nicht).
Ich bin mir nicht sicher, welche Teile fehlen. Kann mir bitte jemand dabei helfen? Danke vielmals!
Aktualisieren: Wenn ich den Container inspiziere, hier ist die Mount-Info.
"Mounts": [
{
"Type": "bind",
"Source": "/Users/JJ/myApp",
"Destination": "/usr/src/app",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915",
"Source": "/var/lib/docker/volumes/12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915/_data",
"Destination": "/usr/src/app/node_modules",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
Warum denken Sie, dass "source" und "destination" ausgeschaltet sind? Der erste lädt ein Host-Verzeichnis, der zweite nicht. Also die sehen gut aus für mich. Können Sie 'docker-compose run web sh' ausführen und prüfen, ob die Änderungen' code 'server.js' sich im Container-Dateisystem widerspiegeln? Es sollte sein. – tayfun
Ich kann die Datei Änderungen in/usr/src/app sehen, aber ich bin mir nicht sicher, warum es nicht beim Aktualisieren des Browsers widerspiegelt. +1 – Jwqq
Das bedeutet, dass Ihre Mounts korrekt funktionieren. Ihre Knotenanwendung, die mit 'npm start' ausgeführt wird, lädt Codeänderungen nicht neu. Ich bin mir nicht sicher, wie Sie das tun würden, wahrscheinlich npm Server-Konfiguration, die Codeänderung automatisch neu lädt. – tayfun