您好,登錄后才能下訂單哦!
小編給大家分享一下docker如何部署LNMP&phpMyAdmin,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
環(huán)境準(zhǔn)備:
在一臺(tái)主機(jī)上部署lnmp,基于多個(gè)容器:
nginx服務(wù):172.16.10.10
mysql服務(wù):172.16.10.20
php服務(wù):172.16.10.30
解決容器固定ip地址問題:
注意:因?yàn)楫?dāng)容器停止時(shí)或者將容器刪除,再次運(yùn)行相同的容器,它的ip地址不再時(shí)原來(lái)的地址,所以我們需要自定義一個(gè)網(wǎng)段,來(lái)指定容器的ip地址。
項(xiàng)目操作:
(1) 首先自定義一個(gè)網(wǎng)絡(luò):
[root@sqm-docker01 ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 mynet1
(2)下載nginx,php:fpm,mysql-5.7鏡像:
[root@sqm-docker01 ~]# docker pull nginx [root@sqm-docker01 ~]# docker pull php:7.2-fpm <!--使用的是php:7.2-fpm的鏡像--> [root@sqm-docker01 ~]# docker pull mysql:5.7 <!--使用的是mysql:5.7的鏡像-->
(3)####運(yùn)行一個(gè)基于nginx鏡像的容器#####
#先將nginx服務(wù)運(yùn)行,以拷貝出nginx的配置文件:
參數(shù)解釋:
run :創(chuàng)建一個(gè)新的容器
-d:后臺(tái)運(yùn)行
--name:自定義名稱為test1
在宿主機(jī)創(chuàng)建需要掛載文件的目錄:
網(wǎng)站主目錄:/wwwroot;
nginx的配置文件:/docker;
[root@sqm-docker01 ~]# mkdir /wwwroot [root@sqm-docker01 ~]# mkdir /docker
##使用docker cp命令將nginx存放配置文件的目錄拷貝到本機(jī),
注意:docker cp命令可以將宿主機(jī)上的文件拷貝到容器中,也可以反向拷貝,將容器中的文件或目錄拷貝到本機(jī)
[root@sqm-docker01 ~]# docker cp test1:/etc/nginx /docker/ #使用docker cp將nginx存放配置文件的目錄拷貝到宿主機(jī)。
[root@sqm-docker01 ~]# ls /docker/nginx/conf.d/ default.conf
#注意:需要修改的是nginx conf.d目錄下的default.conf文件,而不是nginx.conf 文件。
拷貝nginx網(wǎng)頁(yè)目錄:
[root@sqm-docker01 ~]# docker cp test1:/usr/share/nginx/html /wwwroot/ [root@sqm-docker01 ~]# ls /wwwroot/html/ 50x.html index.html
修改nginx默認(rèn)的測(cè)試網(wǎng)頁(yè):
[root@sqm-docker01 html]# echo "<h2>hello welcome to nginx web</h2>" > index.html
(4)運(yùn)行nginx容器:
分別將容器中目錄掛載到本地目錄,并且指定ip地址
[root@sqm-docker01 ~]# docker run -itd --name nginx --network my_net1 --ip 172.16.10.10 -p 80:80 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html nginx:latest
參數(shù)解釋:
run:運(yùn)行一個(gè)容器
-itd: i:可交互
t:偽終端
d:保持容器后臺(tái)運(yùn)行
--network :基于哪張網(wǎng)卡創(chuàng)建網(wǎng)絡(luò)
--ip: 定義容器的ip地址
-v = --volume 數(shù)據(jù)卷,進(jìn)行一個(gè)掛載
掛載格式: 宿主機(jī):容器內(nèi)
p:映射端口,宿主機(jī)端口:容器內(nèi)端口
(5)運(yùn)行mysql容器:
[root@sqm-docker01 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123.com -d -p 3306:3306 --network my_net1 --ip 172.16.10.20 mysql:5.7
-e就是設(shè)置容器里的環(huán)境變量,我們?cè)O(shè)置了mysql的密碼環(huán)境變量,這個(gè)變量會(huì)傳入容器里面來(lái)設(shè)置mysql的密碼
在本機(jī)測(cè)試root用戶是否能夠登錄mysql:
首先需要下載mysql客戶端:
[root@sqm-docker01 ~]# yum -y install mysql
(6)運(yùn)行php容器:
[root@sqm-docker01 ~]# docker run -itd -p 9000:9000 --name phpfpm -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 php:7.2-fpm
注意:
保證nginx和php共享一個(gè)存放網(wǎng)頁(yè)的目錄,php創(chuàng)建和nginx相同的默認(rèn)網(wǎng)頁(yè)根目錄(-v掛載時(shí),如果容器中沒有該目錄,將會(huì)自動(dòng)創(chuàng)建)。
(7)配置nginx和php-fpm:
我們要對(duì)php解析nginx進(jìn)行一個(gè)配置:
創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試網(wǎng)頁(yè):
接下來(lái)需要修改nginx配置文件:
[root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf
(8)配置mysql:
搭建phpMyadmin:
phpMyAdmin 是一個(gè)以PHP為基礎(chǔ),以Web-Base方式架構(gòu)在網(wǎng)站主機(jī)上的MySQL的數(shù)據(jù)庫(kù)管理工具,讓管理者可用Web接口管理MySQL數(shù)據(jù)庫(kù)。借由此Web接口可以成為一個(gè)簡(jiǎn)易方式輸入繁雜SQL語(yǔ)法的較佳途徑,尤其要處理大量數(shù)據(jù)的導(dǎo)入及導(dǎo)出更為方便。其中一個(gè)更大的優(yōu)勢(shì)在于由于phpMyAdmin跟其他PHP程序一樣在網(wǎng)頁(yè)服務(wù)器上運(yùn)行,但是您可以在任何地方使用這些程序產(chǎn)生的HTML頁(yè)面,也就是于遠(yuǎn)程管理MySQL數(shù)據(jù)庫(kù),方便的創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)及數(shù)據(jù)表.
[root@sqm-docker01 html]# pwd /wwwroot/html
解壓到當(dāng)前目錄:
[root@sqm-docker01 html]# unzip phpMyAdmin-4.9.1-all-languages.zip
重命名:
[root@sqm-docker01 html]# mv phpMyAdmin-4.9.1-all-languages phpmyadmin
修改nginx配置文件--配置與phpMyAdmin連接:
[root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf
將原先的location配置項(xiàng)進(jìn)行拷貝,再添加以下兩個(gè)location配置段。
修改完nginx配置文件,重啟nginx:
訪問測(cè)試網(wǎng)頁(yè):
已經(jīng)將容器中的端口映射到了宿主機(jī)上,所以直接訪問宿主機(jī)地址:172.16.1.30
訪問php解析nginx網(wǎng)頁(yè):
接下來(lái)測(cè)試登陸 phpMyAdmin:
訪問url:http://172.16.1.30/phpmyadmin/index.php
缺少mysqli模塊,所以無(wú)法訪問,所以需要添加php支持mysql配置模塊:
怎樣針對(duì)容器進(jìn)行添加擴(kuò)展模塊,我們可以登陸dockerhub進(jìn)行查詢相關(guān)文檔:
鏈接路徑:https://hub.docker.com/
復(fù)制以上dockerfile腳本,到本地進(jìn)行安裝:
注意還需添加部分內(nèi)容:
[root@sqm-docker01 ~]# vim Dockerfile
FROM php:7.2-fpm RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo pdo_mysql
進(jìn)行構(gòu)建dockerfile:
[root@sqm-docker01 ~]# docker build -t phpfpm-mysqli .
參數(shù)解釋:
build:進(jìn)行構(gòu)建
-t :指定標(biāo)簽
. 表示當(dāng)前目錄下的Dockerfile
構(gòu)建完成后,將原有的php鏡像刪除,運(yùn)行剛剛過構(gòu)建成功的支持mysqli模塊的鏡像:
[root@sqm-docker01 ~]# docker stop phpfpm phpfpm [root@sqm-docker01 ~]# docker rm phpfpm phpfpm
[root@sqm-docker01 ~]# docker run --name phpfpm -d -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 phpfpm-mysqli:latest #鏡像指定剛剛構(gòu)建dockerfile生成的鏡像名。
修改 phpMyAdmin默認(rèn)的sample(樣例文件):
想要配置文件將其使用,必須進(jìn)行重命名,將sample去掉。
[root@sqm-docker01 phpmyadmin]# pwd /wwwroot/html/phpmyadmin [root@sqm-docker01 phpmyadmin]# cp config.sample.inc.php config.inc.php
對(duì)配置文件進(jìn)行修改:
[root@sqm-docker01 phpmyadmin]# vim config.inc.php
修改完配置文件重啟php:
[root@sqm-docker01 phpmyadmin]# docker restart phpfpm phpfpm
訪問phpMyAdmin網(wǎng)頁(yè):
輸入url:http://172.16.1.30/phpmyadmin/index.php
#用戶名和密碼,是數(shù)據(jù)庫(kù)的登陸密碼
成功訪問到mysql數(shù)據(jù)庫(kù)。。。。。。
至此在docker中多容器之間部署lnmp搭建完成。
以上是“docker如何部署LNMP&phpMyAdmin”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。