在mac下配置amp环境虽然有简单的xampp,但是仍然会出现一些奇奇怪怪的错误,所以我想到利用docker来下载别人构建的环境,一来省力,而来通过这样的配置以了解对docker的一些了解。
以往配置lamp(其实比起apache我更喜欢nginx,感觉更简单),基本上就是百度,然后各种教你如何从源码下载、编译,然后如何配置他们。尽管从中能学到很多东西,可到头来每次配置环境仍然要百度他们,然后按照他们的介绍来,实在麻烦。
有一种好点的解决方法是利用package manager,比如ubuntu的apt-get,CentOS的yum,mac下有bower,windows嘛就各种下载就行了。但下载后依然可能会出现各种问题,可能也要自己修改配置文件,手动开启一些服务。
有一种更好的解决方案就叫xampp,对于只需要一个测试,开发环境的php程序员来说,xampp绝对是福音。然而身边仍然有小伙伴会出现错误,比如php_mysql函数无法使用等等,试了各种方法也解决不了。
docker可以说是更好的“打包”,想要什么环境很容易找到别人的镜像,学了会用它后,配置什么环境都相对要容易很多,而自己搭建的环境也容易分享给别人。

安装教程:

参考地址

Ubuntu:
http://www.linuxdown.net/install/soft/2016/0303/4906.html
CentOS:
http://www.server110.com/docker/201411/11105.html

笔者记录

笔者是在ubuntu环境下,就跟着教程执行如下命令:

1
2
3
4
5
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
$ sudo apt-get purge lxc-docker
$ sudo apt-get update
$ sudo apt-get install docker-engine

装好应该会自动启动,所以没必要再手动启动了

在这里稍微有个建议,默认的情况下apt-get update速度比较慢,建议采用镜像,笔者用的是163的镜像,参考地址: http://blog.csdn.net/this_is_chris/article/details/51085621

1
2
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list_backup
$ sudo vi /etc/apt/sources.list

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

检查是否安装成功

$ sudo docker images
当然笔者当初比较心切,直接输入
$ sudo docker search xampp 看看有没有好用的镜像

解决sudo问题

如果不是root用户(不推荐用root账号)会有个麻烦,每次执行docker命令都需要加sudo 如果觉得麻烦可以参考这篇文章:
http://www.tinylab.org/use-docker-without-sudo/

镜像选择与开启

tomsik68/xampp是笔者推荐的镜像,直接拿过来用即可。

笔者记录

1
2
$ docker pull tomsik68/xampp
$ docker run -p 41061:22 -p 41062:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp

第一条命令显然就是拉取镜像的意思,而第二条则是运行一个服务(实例),相当于开启了一个虚拟机一样。
-p 设定端口映射,一般需要映射22和80两个端口。
-d 即后台运行服务 -v是设置挂载,上述例子中将 ~/my_web_pages/my_testing_page1这个文件夹挂载为这个实例里面的/www文件夹,如果你仔细看dockerfile,可以发现其实/www是链接到xampp里面的htdocs文件夹的。

这样可以通过访问
$ ssh -p 41061 root@localhost 访问这个实例,密码是root
通过访问http://localhost:41062/访问xampp首页,而www文件夹内的网站则需要通过http://localhost:41062/www进行访问
由于3306(mysql数据库端口)没有进行映射,需要ssh进入实例才可以操作

1
2
$ ssh -p 41061 root@localhost
$ /opt/lampp/bin/mysql

由于/opt/lampp/bin没有在环境变量中,需要这样打开mysql,千万别以为没有mysql。
另外,镜像中是没有git的,如果需要用到,可以apt-get install git 由于是root用户,没必要sudo了。

到这里, docker加apache-mysql-php环境就配置完成了。