开发环境的搭建,是新人入职后的第一道槛,有时一个小小的问题就能阻塞半天。若是能提供一个工具在短期内搞定开发环境,势必提升新人对团队的印象分!docker就是这样一个工具。前端
docker有个重要的概念叫镜像,官方概念比较拗口,这么解释比较容易理解:docker仓库有不少镜像,包括node、nginx、redis等等,一个镜像通常解决一个问题,镜像没有状态,并且永远不会改变。容器,是镜像执行的地方。node
第一步,安装docker,接着在命令行执行如下命令:nginx
docker run -d -p 80:80 docker/getting-started
以上命令建立了一个容器,执行的镜像是docker/getting-started,docker会自动从docker仓库下载这个镜像。命令执行成功后,在浏览器打开http://localhost 便可访问这个容器的服务。git
若是要访问本身的项目,须要把本身的项目作成镜像。github
如何建立镜像?打开前端项目根目录,新建Dockerfile配置文件,配置以下(假设你的项目依赖nodejs)redis
FROM node:10.13.0 WORKDIR /app COPY . . RUN npm install CMD ["npm", "run", "dev"]
FROM node:10.13.0:指定依赖的基础镜像nodejs,版本为10.13.0
WORKDIR /app:指定工做目录
COPY . .:拷贝当前目录全部文件到/app
RUN npm install:在项目打包为镜像时执行指定npm install
CMD ["npm", "run", "dev"]:镜像在容器中启动时执行的命令,这里假设为npm run devdocker
新建.dockerignore,忽略那些不须要打包到镜像的文件(夹)npm
node_modules
把当前文件夹内容打包为镜像,注意最后有个点浏览器
docker build -t my-app .
建立容器,注意,前端项目通常会开启DevServer,host必须配置为0.0.0.0,不然在宿主机上没法访问docker容器内部的开发环境。app
建立名字为my-app-container的容器,执行的镜像是my-app,假设DevServer配置的端口为8080,将容器内的8080映射到宿主机的8080端口,冒号前面的是宿主机端口,后面的是docker容器的端口。
docker run -dp 8080:8080 --name my-app-container my-app
容器会自动执行Dockerfile指定的CMD命令,稍后就能够在浏览器输入http://localhost:8080 访问容器内的开发环境了。
查看全部正在运行的docker容器
docker ps
业务代码都打包到镜像里了,接下来,要怎么修改业务代码呢?只须要在建立容器的时候,作文件映射。
在这以前,先中止并删除当前运行的容器
//中止容器 docker kill my-app-container //删除容器 docker rm my-app-container
假设宿主机前端目录是/project/app,用-v命令,映射到容器的/app
docker run -dp 8080:8080 -v /project/app:/app --name my-app-container my-app
以后,访问http://localhost:8080 ,修改宿主机的代码,代码在容器中编译,宿主机的浏览器也会实时刷新,如同本地开发同样。