實(shí)戰(zhàn)基于Docker部署Nginx應(yīng)用網(wǎng)站
??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??
一、準(zhǔn)備工作
首先我們需要準(zhǔn)備一個(gè)服務(wù)器,一個(gè)打包好了的前端應(yīng)用網(wǎng)站,動(dòng)態(tài)網(wǎng)站的話還需要一個(gè)后端。
這里我就以華為云為例。當(dāng)然服務(wù)器就全看大家的荷包了。
我們先打開華為云找到容器。
這里我們可以看到一個(gè)叫做容器鏡像服務(wù) SWR的產(chǎn)品,點(diǎn)進(jìn)去。點(diǎn)擊立即使用。找到這個(gè)點(diǎn)擊,有了這個(gè)我們就可以進(jìn)行鏡像加速。
這個(gè)地址在后面就會(huì)使用到,當(dāng)然我們這個(gè)不僅僅是華為云有,像阿里云, 騰訊云這些也是有的。找的方法也差不多,還有一些地址可以看我前面幾篇的文章也是有寫的。
接下來我們就可以去xshell里面進(jìn)行操作了。
二、下載docker
這里我們使用docker來進(jìn)行部署,所以我們需要先去下載一下docker。詳細(xì)的可以看我??這篇文章??,這里我們就加加速。
(1)卸載舊版本
首先先使用。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
卸載舊版本,如果有的話(看情況自己判斷)。
(2)設(shè)置下載源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
設(shè)置好了之后就行進(jìn)行下載了,下面是下載代碼。
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
注意:這樣下載的是最新版本的,如果需要下載指定版本的話可以看我上面說的那篇文章。
(3)設(shè)置鏡像加速
這時(shí)我們剛剛進(jìn)華為云復(fù)制的地址就有用處了。當(dāng)然也還有很多選擇。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["你的加速地址"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
完成之后可以使用docker info來查看是否修改成功。
這個(gè)registry mirrors變成你寫進(jìn)去的地址那么就成功了。
(4)下載nginx
接下來,我們就可以使用docker pull命令來下載nginx了。
下載完成之后我們?cè)偈褂胐ocker images命令來查看下載好的鏡像。
可以看到到這里我們就已經(jīng)基本做好準(zhǔn)備工作了。接下來我需要對(duì)文件進(jìn)行處理,方便我們對(duì)docker里的nginx服務(wù)器里的網(wǎng)頁(yè)進(jìn)行配置修改和網(wǎng)頁(yè)修改。也就是使用我們的數(shù)據(jù)卷技術(shù)。
三、配置我們的nginx
(1)配置文件
首先我們需要先知道,nginx是怎么工作的,nginx有兩個(gè)配置文件,conf.d 和 nginx.conf其中conf.d是個(gè)文件夾,里面有個(gè)文件是default.conf。
他們的地址分別為:
/etc/nginx/conf.d
/etc/nginx/nginx.conf
為什么我要提這一嘴呢,因?yàn)槲覀冃枰獙?duì)這兩個(gè)文件進(jìn)行配置操作,滿足我們后續(xù)的需求,而在docker中呢下載的nginx鏡像是進(jìn)行縮減過的,只保留了基礎(chǔ)的功能,所以我們?nèi)绻麤]有使用docker file生成鏡像時(shí)對(duì)nginx進(jìn)行基本配置是無法在里面使用vi和vim功能和其他一些所需的操作功能,而且就算有我們每次需要進(jìn)去配置也是比較的不方便,所以我們需要進(jìn)行數(shù)據(jù)卷操作,使我們能夠更加簡(jiǎn)單的方便的來操作docker里的服務(wù)。
(2)配置網(wǎng)頁(yè)
這里我需要讓我的網(wǎng)址當(dāng)用戶進(jìn)入是判斷是手機(jī)用戶還是電腦用戶然后自行跳轉(zhuǎn)相應(yīng)的頁(yè)面。
(3)操作
所以我們需要?jiǎng)?chuàng)建兩個(gè)文件夾。
然后把自己準(zhǔn)備好的打包好了的網(wǎng)頁(yè)放進(jìn)來。
接下來就去操作配置文件了。
像我這樣創(chuàng)建幾個(gè)文件夾和文件。這個(gè)創(chuàng)建語(yǔ)法這里就不贅述了。然后我們就可以把這幾個(gè)配置文件給配置一下了。這里先解釋一下這幾個(gè)文件的用途,conf.d是個(gè)文件夾,里面有個(gè)文件叫default.conf和nginx.conf文件一樣是nginx的配置文件,我們可以在這兩個(gè)文件中書寫一些你所需的配置,像啥負(fù)載均衡啊,代理,重寫跳轉(zhuǎn)頁(yè)面啥的都是在這配置。當(dāng)然我們這里是要通過數(shù)據(jù)卷和nginx里的配置文件連起來使其生效。這里需要注意一點(diǎn)當(dāng)我們掛載的是文件時(shí),我們需要給文件設(shè)置權(quán)限不然容器里的文件內(nèi)容不會(huì)隨著主機(jī)更改而更改chmod 777 nginx.conf。logs文件夾里是日志文件,可以讓我們獲取到nginx的日志。
建議:盡量掛載目錄而不是掛載文件!
nginx.conf文件中,我這里進(jìn)行如下操作。
意思就是當(dāng)用戶端訪問時(shí)判斷是手機(jī)端還是pc端然后跳轉(zhuǎn)到相應(yīng)的界面。conf.d文件夾中的default.conf也可以進(jìn)行配置。另外的logs文件夾就不需要去操作了。
(4)docker run
接下來我們就可以運(yùn)行這個(gè)容器了,使用docker run命令。
docker run -d -v /home/nginx-music/html/pc:/usr/share/nginx/html/pc -v /home/nginx-music/nginx/conf.d:/etc/nginx/conf.d -v /home/nginx-music/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx-music/html/mo:/usr/share/nginx/html/mo -v /home/nginx-music/nginx/logs:/var/log/nginx -v /home/nginx-music/nginx/logs:/var/log/nginx -p 80:80 --name nginx-music-v1.0 nginx
將對(duì)應(yīng)的主機(jī)目錄和容器目錄或文件進(jìn)行掛載即可。設(shè)置端口映射,命名,后臺(tái)執(zhí)行,鏡像名。這些命令不理解的話可以看我上兩篇文章。
(5)查看是否成功
我們可以先通過docker exec -it nginx-music-v1.0 /bin/bash這個(gè)命令進(jìn)入我們的nginx容器進(jìn)行檢測(cè),使用nginx -t先進(jìn)行測(cè)試看看我們的nginx.conf文件的配置語(yǔ)法有無錯(cuò)誤。
之后我們就可以去網(wǎng)站上測(cè)試一下了看像是否成功。
這樣就可以了。