使用Docker"创建React App"

joh*_*yan 13 livereload docker reactjs webpack docker-compose

我想知道是否有人使用dock-react-app和docker有任何经验.我能够使用Dockerfile设置它:

from node
RUN mkdir /src
WORKDIR /src
ADD package.json /src/package.json
RUN npm install
EXPOSE  3000
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)

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

app:
  volumes:
    - "./app:/src"
  ports:
    - "3000:3000"
    - "35729:35729"
  build: ./app
Run Code Online (Sandbox Code Playgroud)

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

有任何建议让这个工作正常吗?

met*_*mit 9

是的,正如aholbreich所提到的,我会在我的机器上使用npm install/ local 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" ]
Run Code Online (Sandbox Code Playgroud)

您需要将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"
},
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令在CI服务上运行测试:

docker run <image> npm test
Run Code Online (Sandbox Code Playgroud)

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


sh4*_*sh4 6

我最近创建了一个名为hello-docker-react的小项目,他正在寻找op正在寻找的东西.

它由docker-compose,create-react-app,yarn,节点图像和小入口点脚本组成.

实时重装工作完美无缺,我还没有发现任何问题.

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