背景
在团队协作开发的过程中,有的同事用windows,有的用mac;我本人用的mac。在多人协作开发H5项目(ionic
)的过程中会碰到以下问题:
-
windows
下经常无法打release
包 -
windows
下npm install
经常失败 - 编写的热更新打包脚本只支持
linux
、mac
等环境,在windows
上执行不了
使用Docker统一开发环境
利用docker
的容器技术在mac
、windows
下运行一个统一的centos
终端,一方面可以解决上面提到的问题,另外也可以让团队成员学习并熟悉linux
下常用的命令。
下载并安装docker
https://www.docker-cn.com/
https://www.docker.com/
docker镜像加速器
--registry-mirror=https://registry.docker-cn.com
--registry-mirror=http://hub-mirror.c.163.com
http://datastart.cn/tech/2016/09/28/docker-mirror.html
编写Dockerfile
# Dockerfile for ionic project
FROM centos:7
RUN curl -sL https://rpm.nodesource.com/setup_6.x | bash -; \
yum install epel-release; \
yum -y install nodejs npm git zip; \
yum clean all; \
npm install -g ionic; \
npm install -g cordova-hot-code-push-cli; \
npm install -g gulp; \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \
echo "Asia/Shanghai" >> /etc/timezone; \
# 后面2行是设置centos的时区
下载镜像
# 进入到Dockerfile目录执行
$ docker build -t centos:mobile .
启动容器
$ docker run -it -v /Users/issuser/code:/home/code -p 8100:8100 -p 10001:10001 -p 3001:3001 --name ionic centos:mobile bash
# -v 挂载数据卷:将宿主机(windows、mac)的目录挂载到容器(centos)的`/home/code`目录下
# -it :命令行交互
# -p 8100:8100,端口映射,将宿主机的8100端口映射到容器的8100端口
# -name ionic :给容器起个别名,后面可以用这个别名来操作此容器
注意:
windows
下挂载目录到容器中比较麻烦。目前可以这样做:
- 目录必须在
c:/Users
下(注意大小写,windows下坑真多),最好给everyone
设置了读写权限
# os x
$ docker run -v /Users/<path>:/<container path> ...
# windows
$ docker run -v /c/Users/<path>:/<container path> ...
docker维护常用命令
# 查看当前正在运行的容器实例
$ docker container ls
# 查看当前所有的容器实例
$ docker container ls -a
# 删除名为ionic的容器实例
$ docker rm ionic
# or
docker container rm ionic
# 删除虚悬的<none>镜像
$ docker rmi $(docker images -q -f dangling=true)
# 启动容器
$ docker start ionic
# 进入容器
$ docker attach ionic