# 快速搭建公司内部统一的开发环境 很多公司存在开发环境搭建困难的问题,其实可以通过Docker来统一搭建员工的开发环境。 # DEV镜像 SD框架提供了一个DEV镜像[SD-Docker](https://github.com/tmtbe/swoole-docker) 在仓库的DEV目录下存在一个docker-compose.yml通过这个文件模板来建立开发环境。 镜像存储在阿里云上,想拉取镜像需要开通阿里云的镜像加速器。 首先建议你注册阿里云账号,访问阿里云Docker镜像仓库 [Docker镜像仓库](https://cr.console.aliyun.com/#/accelerator) 申请你的专属加速器地址,通过下面的文档安装以及配置好你的Docker。 # 准备工作 购买和选用一台性能较好的服务器,系统选用Centos7或者Ubuntu16。 安装Docker,Docker-Composer,Samba 。 Samba是文件共享软件,通过Samba可以在Windows下挂载linux目录。 # 编写Docker-Compose 这里给出一个例子 ``` version: "2" services: # MySQL 5.7: https://hub.docker.com/_/mysql/ mysql: container_name: mysql image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_USER: "youwo" MYSQL_PASSWORD: "123456" MYSQL_DATABASE: "youwo_dliao" volumes: - /home/docker/mysql:/var/lib/mysql ports: - "13306:3306" # Redis 3.2.10: https://hub.docker.com/_/redis/ redis: container_name: redis image: redis:3.2.10 volumes: - /home/docker/redis:/data ports: - "16379:6379" # SD框架阿里云内网registry-internal.cn-hangzhou.aliyuncs.com/youwoxing/dev ojl: container_name: ojl image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/ojl:/home ports: - "10183:8083" - "10193:9093" - "10122:22" zch: container_name: zch image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/zch:/home ports: - "10283:8083" - "10293:9093" - "10222:22" ln: container_name: ln image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/ln:/home ports: - "10383:8083" - "10393:9093" - "10322:22" dwx: container_name: dwx image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/dwx:/home ports: - "10483:8083" - "10493:9093" - "10422:22" lc: container_name: lc image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/lc:/home ports: - "10583:8083" - "10593:9093" - "10522:22" jxy: container_name: jxy image: registry.cn-hangzhou.aliyuncs.com/youwoxing/dev links: - mysql - redis volumes: - /home/docker_user/jxy:/home ports: - "10683:8083" - "10693:9093" - "10622:22" ``` 我们为每一个员工创建了不同的sshd的端口用于连接终端,并暴露了SD服务器的2个端口,这个可以根据自身项目需要设置。 每一个员工都挂载了一个磁盘目录,可以发现在 /home/docker_user/下存在所有员工的开发目录。Docker系统中的/home目录被挂载到了对应的 /home/docker_user/××目录下。 Mysql和Redis是公用的,通过link到各个容器提供给开发者使用。在容器中可以通过mysql:3306,redis:6379域名来访问到具体的实例,在外网可以通过13306访问到mysql,通过16379访问到redis,同样mysql和redis的存盘文件会被映射到/home/docker相应目录下。 编写好yml文件后通过下面命令开启容器编排 ``` docker-compose up -d ``` # 远程连接 开发人员通过SSH工具远程连接到被分配的容器中去。 注意:/home目录下保存的文件才能持久保留。 用户名:root 密码:123 # Windows磁盘映射 通过Samba来配置SMB服务。 安装Samba。(百度) 这里提供一个简单的配置 ``` vim /etc/samba/smb.conf ``` 在最后添加如下内容。 ``` [docker_user] comment = docker_user path = /home/docker_user writable = yes create mask = 0777 directory mask = 0777 available = yes browseable = yes public = yes ``` 进入home目录执行 ``` chown -R nobody. docker_user/ ``` 创建Smaba用户 ``` smbpasswd -a root ``` 重启Smaba服务 ``` service smb restart ``` 这里只是提供一个简单的Samba配置,没有设置任何权限,需要复杂配置自行百度。 这时我们在Windows系统下通过添加磁盘映射填写开发者相应的目录比如 ``` \\192.168.8.85\docker_user\ojl ``` 在弹出的用户名密码中输入root即完成磁盘映射。 # 优点 * 员工无需自行搭建开发环境 * 不需要开启虚拟机 * 测试集群更为方便 * 通过磁盘映射和本地写代码没有任何区别 * SD开启auto_reload后会自动更新代码,Windows下磁盘文件有变化SD会自动更新。