专栏首页程序员的碎碎念docker 搭建LAMP开发环境

docker 搭建LAMP开发环境

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

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

下载docker

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

下载LAMP镜像

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

启动 lamp 容器

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

访问:

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

部署自己的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)

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

nsenter --target 26269--mount --uts --ipc --net --pid

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

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

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

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

msyql -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; (查看是否修改成功)

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

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

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

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

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

apache2的配置

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

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

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

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

在这里,感谢大家坚持到最后,看完了全部内容。有错误麻烦大家提出来,感谢!

今日作者: benny

不当你的世界,只作你的肩膀

本文分享自微信公众号 - 程序员的碎碎念(gh_53e607dd4782),作者:benny

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • What‘s docker?How to study?

    看图说话:“一只可爱的大鲸鱼上面摆放着许多小箱子,而这些小箱子呢--就是应用程序,鲸鱼就是操作系统”。 大家应该都知道集装箱吧,不过你是什么货物,通过什么运输方...

    benny
  • docker 入门-容器(二)

    使用 run 指令,创建并运行一个基于 Ubuntu 镜像的容器,如果本地没有该镜像,docker 会自动去 docker hub 下载

    benny
  • Docker 入门(一)

    仓库和 registry 是最好理解的,registry 就类似于 GitHub 那样的代码托管平台,GitHub 托管代码,而 registry 则托管镜像,...

    benny
  • 在docker中运行mysql实例

    Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。下图是容器跟虚拟机的对比

    陈灬大灬海
  • 与挖矿斗争的日子,我连 Docker 都删了

    接着检查了服务器 CPU 的使用情况,未发现有挖矿程序在运行,CPU 使用率只有 5% 左右。当时笔者存在侥幸的心理,觉得 2C4G 的服务器配置应该不太适合挖...

    猿芯
  • 手把手docker部署java应用(初级篇)

      在没有 docker 前,项目转测试是比较麻烦的一件事。首先会化较长的时间搭建测试环境,然后在测试过程中又经常出现测试说是 bug,开发说无法复现的情况,导...

    用户2038589
  • Docker 介绍、核心概念、常用命令

    Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动后非常快速...

    桑鱼
  • mac下利用docker部署个mysql

    这个不多说,直接到官网下载对应的版本安装即可,在配置docker时最好切换阿里云镜像,具体步骤不细说,可参考之前的文章 .net core开发环境搭建中有提到如...

    Bug生活2048
  • 基于Docker的持续集成方案(安装和配置MySql) - Part.3

    这篇文章介绍了使用Docker安装MySql数据库的操作步骤,以及安装完成后如何对MySql进行配置。

    张子阳
  • Jmeter(三十二)_搭建本地接口自动化环境

    我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作。大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这...

    飞天小子

扫码关注云+社区

领取腾讯云代金券