docker 搭建LAMP開發(fā)環(huán)境

小編作為一個小白,在搭建lamp這個集成開發(fā)環(huán)境上卡了有4/5天,遇到了不少坑,有時候令人絕望,有時候又讓人興奮。作為小白,學(xué)得不深,在這里把這段時間踩過的坑以及學(xué)習(xí)經(jīng)驗跟大家分享,希望對大家的學(xué)習(xí)幫助。


2750d0032612304ad79f7fbfeec64719.jpeg

什么?不知道docker!emmm.....在這里我先不介紹了,以后有機(jī)會我還整理下學(xué)習(xí)資料給大家哈,今晚的文章是一篇實操教程。

下載docker

你可以在官網(wǎng)上下載或者其他大牛整理的下載鏈接都可以,往后我也會寫一篇入門級的文章來介紹下載docker的?!?a target="_blank">https://www.docker.com/】

image.png

下載LAMP鏡像

docker pull tutum/lamp(需要等待一段時間),但如果你是國外服務(wù)器,你的下載速度將會是國內(nèi)的十幾倍。

啟動 lamp 容器

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

訪問:

image.png

啟動這個容器的目的是為了測試鏡像安裝是否成功。

部署自己的php應(yīng)用

mkdir php
cd php/
touch Dockerfile
vim Dockerfile

Dockerfile內(nèi)容為:

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下來
當(dāng)你進(jìn)行到這里的時候,你就要開始在容器上的mysql上創(chuàng)建數(shù)據(jù)庫還有配置與你項目相關(guān)的apache2.conf文件。這時候你或許會疑惑,容器是‘虛擬化’的,我看不到文件目錄,改怎么進(jìn)行mysql和apache2的配置呢?沒錯,容器你無法在本地像訪問服務(wù)器一樣,你在服務(wù)器上是看到的“虛擬化”的。這里推薦一個工具NSENTER,它可以進(jìn)入容器,進(jìn)去后給你的感覺就好像你在服務(wù)器上又打開另一個‘服務(wù)器’。當(dāng)然也有其他的工具,也可以達(dá)到同樣的效果。

下載nsenter

你要把nsenter安裝到你的主機(jī)(服務(wù)器)上,安裝命令如下:

$ 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可以訪問另一個進(jìn)程的名稱空間。所以為了連接到某個容器我們還需要獲取該容器的第一個進(jìn)程的PID??梢允褂胐ocker inspect命令來拿到該PID。

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

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

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

然后,你就可以進(jìn)入容器啦!

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

將本地數(shù)據(jù)庫同步到容器上

容器上mysql默認(rèn)的登錄用戶為root,密碼為空。

mysql -uroot

這時候你容器上的mysql只能容器內(nèi)訪問,也就是localhost,外網(wǎng)是無法訪問的。解決辦法如下:
[圖片上傳中...(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

因為我已經(jīng)修改過了,所以顯示為“%”,沒修改過的為localhost
然后建議你把mysql的密碼也改了吧,訪問你連接數(shù)據(jù)庫的工具,無法訪問無密碼的數(shù)據(jù)庫。
操作如下:

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

接下來就是見證奇跡的時候了,你本地電腦,我用的工具的Navicat來連接mysql數(shù)據(jù)庫。


image.png

你按照要求輸入就好了,密碼就是你剛改的密碼,然后你就可以看到容器上數(shù)據(jù)庫啦。

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

apache2的配置

這個是我采坑時間最長的,在我絕望的時候,多謝舍友小李和宇哥拉了我一把。
主要是我的項目的用thinkphp框架寫的,在url重寫上,apach2配置需要修改一部分內(nèi)容。


image.png

我理解的也不是很深刻,后續(xù)還得多學(xué)習(xí),我主要修改的地方有:

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

藍(lán)框里的內(nèi)容去掉。
(我覺得我這部分說的不透徹,但這個操作是成功的,有興趣的同學(xué),可以去apache的官網(wǎng)上看配置文件)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、LAMP環(huán)境的介紹 1.LAMP環(huán)境的重要性 思索許久,最終還是決定寫一篇詳細(xì)的LAMP的源碼編譯安裝的實驗文...
    endmoon閱讀 2,889評論 4 26
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評論 19 139
  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,655評論 1 39
  • 在夜晚等你,你不來,我將相思藏進(jìn)你的夢里; 在春天等你,你不來,我將愛戀撒在綻放的花海中; 在今生等你,你不來,我...
    的確良閱讀 313評論 0 0
  • 輸入 y ,創(chuàng)建 git_hug 目錄No githug directory found, do you wish...
    風(fēng)花花閱讀 2,118評論 0 4

友情鏈接更多精彩內(nèi)容