docker 搭建LAMP开发环境

小编作为一个小白,在搭建lamp这个集成开发环境上卡了有4/5天,遇到了不少坑,有时候令人绝望,有时候又让人兴奋。作为小白,学得不深,在这里把这段时间踩过的坑以及学习经验跟大家分享,希望对大家的学习帮助。


2750d0032612304ad79f7fbfeec64719.jpeg

什么?不知道docker!emmm.....在这里我先不介绍了,以后有机会我还整理下学习资料给大家哈,今晚的文章是一篇实操教程。

下载docker

你可以在官网上下载或者其他大牛整理的下载链接都可以,往后我也会写一篇入门级的文章来介绍下载docker的。【https://www.docker.com/

image.png

下载LAMP镜像

docker pull tutum/lamp(需要等待一段时间),但如果你是国外服务器,你的下载速度将会是国内的十几倍。

启动 lamp 容器

docker run -d -p 8080:80 -p 3306:3306 tutum/lamp
docker ps记住容器id(例:123)

访问:

image.png

启动这个容器的目的是为了测试镜像安装是否成功。

部署自己的php应用

mkdir php
cd php/
touch Dockerfile
vim Dockerfile

Dockerfile内容为:

FROM tutum/lamp:latest
RUN rm -fr /app && git clone https://github.com/xxxxxxxx.git /app
#这里替换 https://github.com/xxxxxxxxx.git 地址为你自己的项目地址
EXPOSE 80 3306
CMD ["/run.sh"]
docker build -t dockerpool/my-lamp-app .

启动容器

docker stop (容器id:123)
docker rm (容器id:123)
docker run -d -p 80:80 -p 3306:3306 dockerpool/my-lamp-app

测试访问

curl http://localhost

这一步是为了看下你的项目是否成功clone下来
当你进行到这里的时候,你就要开始在容器上的mysql上创建数据库还有配置与你项目相关的apache2.conf文件。这时候你或许会疑惑,容器是‘虚拟化’的,我看不到文件目录,改怎么进行mysql和apache2的配置呢?没错,容器你无法在本地像访问服务器一样,你在服务器上是看到的“虚拟化”的。这里推荐一个工具NSENTER,它可以进入容器,进去后给你的感觉就好像你在服务器上又打开另一个‘服务器’。当然也有其他的工具,也可以达到同样的效果。

下载nsenter

你要把nsenter安装到你的主机(服务器)上,安装命令如下:

$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
$ tar -xzvf util-linux-2.24.tar.gz 
$ cd util-linux-2.24/
$ ./configure --without-ncurses  
$ make nsenter 
$ sudo cp nsenter /usr/local/bin 

nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。

docker inspect 10d555333(CONTAINER ID 容器ID)
image.png

找到State.Pid(例如:30584),然后执行下面命令:

nsenter --target 26269--mount --uts --ipc --net --pid 
image.png

然后,你就可以进入容器啦!

PS:参考
https://blog.csdn.net/u010397369/article/details/41045251

将本地数据库同步到容器上

容器上mysql默认的登录用户为root,密码为空。

mysql -uroot

这时候你容器上的mysql只能容器内访问,也就是localhost,外网是无法访问的。解决办法如下:
[图片上传中...(image.png-347418-1522675699365-0)]

select host,user from mysql.user; 
update mysql.user set host='%' where user='root' and host='localhost';  
select host,user from mysql.user; (查看是否修改成功)
image.png

因为我已经修改过了,所以显示为“%”,没修改过的为localhost
然后建议你把mysql的密码也改了吧,访问你连接数据库的工具,无法访问无密码的数据库。
操作如下:

 SET PASSWORD FOR ['root'@'localhost'](mailto:'root'@'localhost') = PASSWORD('newpass');

接下来就是见证奇迹的时候了,你本地电脑,我用的工具的Navicat来连接mysql数据库。


image.png

你按照要求输入就好了,密码就是你刚改的密码,然后你就可以看到容器上数据库啦。

PS:参考
https://blog.csdn.net/current_person/article/details/52682062
http://www.cnblogs.com/wangs/p/3346767.html

apache2的配置

这个是我采坑时间最长的,在我绝望的时候,多谢舍友小李和宇哥拉了我一把。
主要是我的项目的用thinkphp框架写的,在url重写上,apach2配置需要修改一部分内容。


image.png

我理解的也不是很深刻,后续还得多学习,我主要修改的地方有:

/etc/apache2/apache2.conf文件
image.png
/etc/apache2/sites-enabled/000-default.conf
image.png

蓝框里的内容去掉。
(我觉得我这部分说的不透彻,但这个操作是成功的,有兴趣的同学,可以去apache的官网上看配置文件)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 一、LAMP环境的介绍 1.LAMP环境的重要性 思索许久,最终还是决定写一篇详细的LAMP的源码编译安装的实验文...
    endmoon阅读 2,610评论 4 26
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,366评论 1 39
  • 在夜晚等你,你不来,我将相思藏进你的梦里; 在春天等你,你不来,我将爱恋撒在绽放的花海中; 在今生等你,你不来,我...
    的确良阅读 278评论 0 0
  • 输入 y ,创建 git_hug 目录No githug directory found, do you wish...
    风花花阅读 1,923评论 0 4