用Docker创buildReact App

我想知道是否有人有任何使用docker的create-react-app的经验。 我能够得到它设置了Dockerfile,如:

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

然后使用docker-compose文件,如:

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

这允许我启动容器并查看应用程序。 但是,当在挂载的卷中保存文件时,livereload不起作用,webpack在src目录中创build了几个.json.gzip文件。

任何build议让这个工作正常?

我最近做了一个名叫hello-docker-react的小项目,他只是在做什么。

它由docker-compose,create-react-app,yarn,一个节点图像和一个小的入口点脚本构成。

现场重新加载工作完美,我还没有发现任何问题。

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

是啊,就像aholbreich提到的那样,我会在我的机器上使用npm install / npm start进行开发,只是因为它太简单了。 docker-compose ,mount volume等等都可能是可能的,但是我觉得设置起来可能有点费劲。

为了部署,你可以很容易地使用一个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服务上运行testing:

 docker run <image> npm test 

没有什么能阻止你在本地运行这个docker容器,以确保事情按预期工作。