2017-05-25 1 views
1

Ich habe ein Problem mit ng serve in meinem Docker-Container, der von docker-compose ausgeführt wird.Docker-Container lädt keine angulare App

Dockerfile

FROM node:7.1 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app 
RUN npm install 
RUN npm install -g angular-cli 
COPY . /usr/src/app 

EXPOSE 4200 

CMD [ "npm", "start" ]' 

Und mein Docker-compose.yml

web: 
    build: . 
    ports: 
     - '8089:4200' 
    volumes: 
     - .:/usr/src/app/ 
    environment: 
     - NODE_ENV=dev 
    command: bash -c "npm start" 

Alles funktioniert gut, wenn ich es laufen, aber die Bearbeitung Datei steigt nicht Nachladen der Anwendung. Datei ist geändert, ich bin sicher, weil ich es per SSH-Verbindung überprüfen und die Datei im Container bearbeitet wird. Wenn der Container erneut gestartet wird, wird jede Änderung angewendet. Ich dachte, wenn ich mit dem Bau Bild von nur Docker umstellen zu komponieren wird dies verschwinden, aber nicht.

Wenn ich berühre einige Datei von docker execwebpack laden Sie alle Datei neu und es funktioniert, ohne den Container neu zu starten.

Jemand hat eine Lösung?

Antwort

3

fand ich Lösung für beide Probleme:

  1. inotify -> nur bearbeiten package.json in "scripts" Abschnitt dieser Linie: "start": "ng serve --host 0.0.0.0 --poll", benötigt nur für Windows-Host,

  2. hot reload -> Fügen Sie in Dockerfile und Ports - '49153:49153' in docker-compose.yml wie @kstromeiras erwähnt.

4

Webpack verwendet einen Port, um die Anwendung live neu zu laden. Dieser Port ist standardmäßig 49153.

Sie müssen diesen Port im Container an den Host-Port freigeben und binden, und das sollte Ihr Problem lösen.

Fügen Sie das also zu Ihrem Dockerfile hinzu.

FROM node:7.1 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app 
RUN npm install 
RUN npm install -g angular-cli 
COPY . /usr/src/app 

EXPOSE 4200 49153 

CMD [ "npm", "start" ]' 

Und dies zu Ihrem docker-compose.yml.

web: 
    build: . 
    ports: 
     - '8089:4200' 
     - '49153:49153' 
    volumes: 
     - .:/usr/src/app/ 
    environment: 
     - NODE_ENV=dev 
    command: bash -c "npm start" 
+0

Es funktioniert auf OS X oder Linux-Host. Aber ich entwickle es auf Windows 10-Host und Host meldet Dateiänderung nicht. So lösen Sie mein ein Problem mit dem Aussetzen von Port, jetzt werde ich Lösung für Inotify auf Windows-Host finden. Hast du vielleicht auch eine Lösung dafür? – gargi258