最近在做服务端相关的开发,由于服务机是Linux系统,所以具体开发环境就要相对应,本地代码能够及时同步到服务器进行执行。其实能够实现这个功能有多种方法像安装Vagrant、Virtualbox等,各有千秋,具体的简单比较下文有,这里先介绍Docker环境。是到,刚才聊到也是Docker的功能之一。
Docker主要有四个部分:
1、客户端;2、守护进程;3、镜像;4、容器;
Docker是基于LXC(是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。)进行扩展开发,但LXC存在的问题是难以移动 - 难以通过标准化的模板制作、重建、复制和移动 container,这里Docker 利用了AUFS(支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)的文件系统)来实现对container的快速更新。 这里的一些专业名词我最后补上百科链接。
百度百科这样介绍Docker:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
(这里让我想起OSX 沙盒机制,这也是mac很少中毒的原因之一吧。)
其中不得不说镜像和容器的关系,借个图展示:
下面介绍一下服务端工程搭建过程:
1、安装Docker环境
MAC
https://www.docker.com/docker-mac
WINDOWS
https://www.docker.com/docker-windows
安装成功,检查docker engine,docker compose,docker machine版本号
其中composer是php组建,负责组织包与包之间的依赖,在项目中通过composer.json和composer.luck进行加载及管理包。
2、添加开发环境镜像 curl -o centos-6.8-x86_64-php-7.1-XXX-dev.tar http://XXXXXX/docker/centos-6.8-x86_64-php-7.1-XXX-dev.tar && docker load -i centos-6.8-x86_64-php-7.1-XXX-dev.tar
添加镜像如图:
3、启动Nginx-Proxy代理
创建本地开发环境docker Network:
$ docker network create nginx-proxy
启动Nginx-Proxy镜像,该镜像将监控上一步创建的nginx-proxy network内的所有新VIRTUHOST添加,并自动增加反向代理
docker run -d -p 80:80 –name nginx-proxy –net nginx-proxy –restart always -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy
4、启动项目服务
git clone {项目git地址} {本地项目目录} # 拷贝代码仓库到本地目录
git clone {项目git地址} {本地项目目录} # 拷贝代码仓库到本地目录
cd {本地项目目录} # 进入本地目录
docker−composeup–force−recreate–remove−orphans−d
d
o
c
k
e
r
−
c
o
m
p
o
s
e
u
p
–
f
o
r
c
e
−
r
e
c
r
e
a
t
e
–
r
e
m
o
v
e
−
o
r
p
h
a
n
s
−
d
docker ps # 查看执行的容器
$ docker exec -it {container_name} sh # 登入进容器
到此为止,基本环境已经搭建完毕,接下来就是在nginx中、hosts、docker镜像virtual_host中分别添加项目域名(注意nginx更改后及时更新,且docker重启后镜像conf文件更改将回退);
启动容器及更改nginx、更新如图:
现在本地IDE的代码将会及时同步到远程,其中有些具体细节省略了,如果有个别小疑问可以小窗我,有些情况可能还会涉及到跳板机等,其他的下节再介绍。共同学习,进步!