用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,一个节点图像和一个小的入口点脚本构成。
现场重新加载工作完美,我还没有发现任何问题。
是啊,就像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容器,以确保事情按预期工作。