本文须要对docker 和现代前端开发模式有必定了解, docker入门能够参考 docker入门教程
不一样系统请自行安装docker环境
目前网上找到的docker 搭建前端开发环境的资料都比较老了, 因此有了此篇文章html
docker --version Docker version 17.09.1-ce, build 19e2cf6
建立项目:前端
create-react-app my-project-react
安装依赖的过程能够直接ctrl-c中止, 由于咱们能够在docker环境中安装依赖node
拉取docker image, 直接采用node镜像react
docker pull node:8.11.4-stretch
下载完成后docker image ls
能够查看已经在本地image:webpack
cd my-project-react docker run -v `pwd`:/workspace -w /workspace --privileged=true node:8.11.4-stretch yarn
命令具体下文解释
install速度慢的, 能够添加.npmrc 和 .yarnrc文件web
registry "https://registry.npm.taobao.org" sass_binary_site "https://npm.taobao.org/mirrors/node-sass/" phantomjs_cdnurl "http://cnpmjs.org/downloads" electron_mirror "https://npm.taobao.org/mirrors/electron/" sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/" profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/" chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
cd my-project-react docker run -it -v `pwd`:/workspace -w /workspace -p 8000:8000 --privileged=true node:8.11.4-stretch yarn start
命令比较长, 逐段解释docker run -it node:8.11.4-stretch
以node:8.11.4-stretch这个image 运行 docker container, -it 表示进入交互式终端;sql
-v `pwd`:/workspace
稍微熟悉shell脚本的就知道, pwd表明当前目录,pwd
反引号表明执行pwd命令, 并输出, 做用就是将当期项目目录挂载到docker 容器中的 /workspace 目录;chrome
-w /workspace --privileged=true
-w 指定工做目录为 /workspace(容器中), --privileged=true, 以防万一, 获取容器的root权限;docker
-p 8000:8000
将运行中容器的8000端口(项目运行端口)映射到主机的8000端口, 注意, 这两个端口必须一致, 不然热更新有问题.本地localhost:8000没法打开网页, 请先吧webpack-dev-server中host配置改成0.0.0, 再查看本机8000端口占用状况;shell
yarn start
以开发模式运行项目, 命令根据本身项目实际状况而定.
固然运行run命令也能够不加上 -it 参数, 直接运行, 这样的缺点是没法直接ctrl-c
中止运行, 中止container 须要使用 docker container stop containerId
命令
以上步骤都ok, build 过程就很简单了, 只须要把 yarn start
命令改为yarn build
便可, 也不须要端口.
docker run -v `pwd`:/workspace -w /workspace --privileged=true node:8.11.4-stretch yarn build