2017-05-25 76 views
1

我在我的碼頭集裝箱運行docker-composeng serve有一些問題。當我運行它,但編輯文件不漲應用的重載碼頭集裝箱不會重新加載角度的應用程序

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" ]' 

我的搬運工,compose.yml

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

一切都很正常。文件被改變,我確定,因爲我通過ssh連接檢查它,並且容器中的文件被編輯。當容器重新啓動時,每改變一次都應用。 我以爲當我只用碼頭工人切換建築圖像來組成這個會消失,但是不會。

當我打電話touch從docker execwebpack一些文件重新加載所有文件,它的工作,而無需重新啓動容器。

有人有解決方案嗎?

回答

3

我發現這兩個問題的解決方案:

  1. 的inotify - >只需編輯package.json"scripts"節這一行:"start": "ng serve --host 0.0.0.0 --poll",只適用於Windows主機所需,

  2. 熱重載 - >在Dockerfile中添加,在docker-compose.yml中添加端口- '49153:49153',如@kstromeiraos中提到的那樣。

4

Webpack使用一個端口來實時重新加載應用程序。該端口默認爲49153

您必須公開並將容器中的端口綁定到主機端口,並且應該可以解決您的問題。

因此,將此添加到您的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 49153 

CMD [ "npm", "start" ]' 

而這對你的docker-compose.yml

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

它正在使用OS X或Linux主機。但我正在Windows 10主機上開發它,並且主機不會更改文件。所以你解決我的一個問題與暴露端口,現在我會找到Windows主機inotify的解決方案。也許你也有一些解決方案嗎? – gargi258