2016-08-04 130 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

相关问题