背景
在上一周筆者對(duì)docker了解倦沧,僅限于這樣認(rèn)知:它能替代虛擬機(jī),并且比虛擬機(jī)更省資源拴鸵。
在老師和同事的感染下,感覺不學(xué)習(xí)docker好像就不能在IT圈混一樣蜗搔,于是劲藐,開始涌入Docker的大潮中。但萬事開頭難樟凄,聽了同事的推薦聘芜,看了寧皓網(wǎng)的基礎(chǔ)的視頻之后感覺僅是對(duì)基本的命令進(jìn)行了了解。但是真拿出來用還是不夠用的缝龄,于是開始搜羅更重資料汰现,學(xué)習(xí)搭建LNMP環(huán)境挂谍。
終于功夫不負(fù)有心人,在今天終于是實(shí)驗(yàn)成功了瞎饲,特此寫下這篇筆記口叙,為后來人提供一個(gè)示例。
實(shí)戰(zhàn)
- 下載nginx官方鏡像和php-fpm鏡像
docker pull nginx
docker pull bitnami/php-fpm
筆者未進(jìn)行更改docker源嗅战,依然是官方源妄田。
當(dāng)然,你可以使用中國源驮捍。
- 使用php-fpm鏡像開啟php-fpm應(yīng)用容器
docker run -d --name myFpm -p -v /var/www/html:/usr/share/nginx/html bitnami/php-fpm
-d : 該參數(shù)為后臺(tái)運(yùn)行之意
-v : 指定宿主機(jī)與容器的映射關(guān)系疟呐。/var/www/html為宿主機(jī)的項(xiàng)目目錄(自定義的),/usr/share/nginx/html為nginx服務(wù)器項(xiàng)目默認(rèn)的路徑东且。
- 使用nginx鏡像開啟nginx應(yīng)用容器
docker run -d --name myNginx -p 8080:80 -v /var/www/html:/usr/share/nginx/html nginx
-p : 該參數(shù)設(shè)置端口對(duì)應(yīng)的關(guān)系启具。所有訪問宿主機(jī)8080端口的URL會(huì)轉(zhuǎn)發(fā)到nginx容器的80端口。
- 查看對(duì)應(yīng)的IP信息
- 首先查看是否啟動(dòng)成功
docker ps -a
可以看到珊泳,上述在STATUS一欄中顯示UP鲁冯,其含義為正在運(yùn)行。
* 查看IP信息
docker inspect myFpm | grep "IPAddress"
- 修改nginx的相關(guān)配置
在容器中是沒有vim命令的旨椒,所以不能在容器中直接修改配置文件晓褪。所以我們必須通過變通的方式去解決這個(gè)問題,否則只能在每個(gè)容器中安裝vim综慎。
- 首先登錄到對(duì)應(yīng)的容器中涣仿,查看配置信息路徑,這在之后修改時(shí)會(huì)用到示惊。
docker exec -it myNginx /bin/bash
-i : --interactive好港,交互模式。
-t : --tty米罚,開啟一個(gè)偽終端钧汹。
/bin/bash : 必須寫,否則會(huì)報(bào)錯(cuò)录择。這是開始偽終端時(shí)拔莱,進(jìn)入bash界面,也就是命令行界面隘竭。
- 查看對(duì)應(yīng)的配置文件位置
/etc/nginx/conf.d/default.conf
退出命令行塘秦,不要使用
exit
,因?yàn)?code>exit會(huì)讓容器停止动看。這里使用ctrl + p + q
來退出容器尊剔。使用專用的復(fù)制命令將配置文件復(fù)制到宿主機(jī),然后在宿主機(jī)進(jìn)行編輯(這就是變通的方法)
docker cp myNginx:/etc/nginx/conf.d/default.conf ./default.conf
這里用到了上一步查詢到的配置文件路徑信息
- 在宿主機(jī)修改配置文件的php部分菱皆,內(nèi)容如下:
location ~ \.php$ {
fastcgi_pass 172.17.0.2:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
- 再次使用復(fù)制命令將其復(fù)制到容器中须误,然后再次進(jìn)入容器中挨稿,將nginx配置文件重新載入
docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf
- 進(jìn)入到nginx容器中重新載入配置文件
docker exec -it myNginx /bin/bash
service nginx reload
成功了
我看了一下,用到的模塊還都有京痢。