2016-08-04 129 views
7

我想知道是否有人有任何使用docker的create-react-app的經驗。我能得到它設置了一個Dockerfile,如:「使用Docker創建React應用程序」

from node 
RUN mkdir /src 
WORKDIR /src 
ADD package.json /src/package.json 
RUN npm install 
EXPOSE 3000 
CMD [ "npm", "start" ] 

然後使用泊塢窗,撰寫文件,如:

app: 
    volumes: 
    - "./app:/src" 
    ports: 
    - "3000:3000" 
    - "35729:35729" 
    build: ./app 

這讓我開始了容器和查看應用程序。但是,在掛載的卷中保存文件時,livereload不起作用,webpack在src目錄中創建了幾個.json.gzip文件。

任何建議讓這個工作正常?

+1

我想碼頭工人是不是你想有什麼合適的工具。只需在您的計算機上進行實時重載和其他功能開發,並僅爲發佈版本或自動化測試構建容器/映像......不清楚爲什麼您需要此處的Docker for development ... – aholbreich

+0

livereload應該可以工作使用Docker for Mac,或在Linux上使用docker。如果您仍在使用Docker Toolbox(使用VM),則報告說文件監視通常不起作用。 – dnephin

+0

@dnephin謝謝你的提示切換到Mac版Docker,一切正常。 –

回答

5

是的,正如aholbreich所說,我會在本地機器上使用npm install/npm start進行開發,僅僅因爲它非常簡單。這可能與docker-compose,安裝量等也是可能的,但我認爲它可能有點費勁地設置。

對於部署,您可以非常輕鬆地使用Dockerfile。這裏有一個例子Dockerfile我使用的是:

FROM node:6.9 

# Create app directory 
RUN mkdir -p /src/app 
WORKDIR /src/app 

# to make npm test run only once non-interactively 
ENV CI=true 

# Install app dependencies 
COPY package.json /src/app/ 
RUN npm install && \ 
    npm install -g pushstate-server 

# Bundle app source 
COPY . /src/app 

# Build and optimize react app 
RUN npm run build 

EXPOSE 9000 

# defined in package.json 
CMD [ "npm", "run", "start:prod" ] 

您需要的start:prod選項添加到您的的package.json

"scripts": { 
    "start": "react-scripts start", 
    "start:prod": "pushstate-server build", 
    "build": "react-scripts build", 
    "test": "react-scripts test --env=jsdom", 
    "eject": "react-scripts eject" 
}, 

你可以運行在您的CI服務測試:

docker run <image> npm test 

沒有什麼能阻止你在本地運行這個碼頭容器,以確保事情按預期工作。

6

我最近做了一個叫做hello-docker-react的小項目,他只是在做什麼操作。

它由docker-compose,create-react-app,yarn,一個節點圖像和一個小入口腳本構成。

實時刷新工作完美無缺,我還沒有發現任何問題。

https://github.com/lopezator/hello-docker-react

+1

這個設置完美 – Dmitry

相關問題