????歡迎來到我的CSDN主頁!????
??我是Java方文山,一個在CSDN分享筆記的博主。????
??推薦給大家我的專欄《Docker實戰(zhàn)》。????
??點擊這里,就可以查看我的主頁啦!????
Java方文山的個人主頁
??如果感覺還不錯的話請給我點贊吧!????
??期待你的加入,一起學(xué)習(xí),一起進(jìn)步!????
一、Nginx的簡介
Nginx是一個高性能的開源Web服務(wù)器和反向代理服務(wù)器,也可以用作負(fù)載均衡器、HTTP緩存、郵件代理(IMAP/POP3)等。它最初由俄羅斯的工程師Igor Sysoev開發(fā),并于2004年首次公開發(fā)布。
Nginx因其簡潔、高效和可靠的特點而備受歡迎。相比傳統(tǒng)的Apache服務(wù)器,Nginx使用更少的系統(tǒng)資源,可以處理更多的并發(fā)連接。它采用事件驅(qū)動的異步架構(gòu),能夠有效地處理高并發(fā)請求和大量的并行連接。
Nginx的主要特點包括:
-
高性能:Nginx采用了非阻塞的事件驅(qū)動模型,在同等硬件條件下能夠處理更多的并發(fā)連接,具有出色的性能表現(xiàn)。
-
輕量級:Nginx的代碼精簡,內(nèi)存占用較少,啟動速度快,適用于資源受限的環(huán)境。
-
反向代理:Nginx可以作為反向代理服務(wù)器,接收客戶端請求并將其轉(zhuǎn)發(fā)給后端服務(wù)器,實現(xiàn)負(fù)載均衡和提高網(wǎng)站性能。
-
靜態(tài)文件服務(wù):Nginx可以快速、可靠地提供靜態(tài)文件的訪問服務(wù),減輕后端應(yīng)用服務(wù)器的負(fù)載。
-
動態(tài)內(nèi)容處理:Nginx提供了強(qiáng)大的模塊化架構(gòu),可以與各種后端應(yīng)用服務(wù)器(如PHP、Python、Node.js)集成,處理動態(tài)內(nèi)容的訪問請求。
-
高可靠性:Nginx具備高度穩(wěn)定性和可靠性,在大規(guī)模的互聯(lián)網(wǎng)應(yīng)用中被廣泛使用。
二、創(chuàng)建Mysql容器
創(chuàng)建mysql之前需要做一個事情,mysql需要一個my.cnf的配置文件,目前我們還沒有所以需要在宿主機(jī)上創(chuàng)建一個將該文件放入到目錄中
mkdir -p /mysql/{conf,data}
為了讓我們的容器之間可以相互訪問,所以我們創(chuàng)建一個網(wǎng)絡(luò)
docker network create --subnet 172.18.0.0/16 --gateway 172.18.1.1 net
?現(xiàn)在創(chuàng)建容器就需要為它指定我們的自定義網(wǎng)絡(luò)
docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net net \
--ip 172.18.0.1 \
-d mysql/mysql-server:5.7
進(jìn)入我們的mysql容器進(jìn)行登錄
docker exec -it m1 bash
mysql -uroot -p
?登錄成功以后,我們現(xiàn)在需要一個賬戶進(jìn)行遠(yuǎn)程連接所以創(chuàng)建一個賬戶并賦予權(quán)限
grant all on *.* to root@'%' identified by '密碼'
創(chuàng)建所需的數(shù)據(jù)庫或者使用遠(yuǎn)程工具連接創(chuàng)建一下也可以,我這里就一張表就不那么麻煩了
create database shop
在mysql/data目錄下將sql腳本放入到里面去,因為前面做了目錄掛載所以容器也會有這個腳本
use shop
source /var/lib/mysql/book.sql
查詢表驗證一下
沒有問題退出后記得重啟一下docker restart m1
三、創(chuàng)建Tomcat容器
為了切合我們的主題Nginx負(fù)載均衡,所以這里肯定不止創(chuàng)建一個tomcat容器,但是每次創(chuàng)建一個容器就需要手動啟動項目太麻煩了,我們就手動創(chuàng)建一個鏡像
vim Dockerfile
在Dockerfile文件下進(jìn)行編輯?并指定數(shù)據(jù)庫地址為m1
FROM openjdk
WORKDIR /project
COPY spring.jar /project
CMD java -jar spring.jar --mysql.addr=m1
構(gòu)建鏡像
docker build -t spring:v1.0 .
?鏡像構(gòu)建好了,接下來根據(jù)我們的鏡像創(chuàng)建并啟動容器
docker run -itd --name s1 --net net --ip 172.18.0.101 spring:v1.0
docker run -itd --name s2 --net net --ip 172.18.0.102 spring:v1.0
docker run -itd --name s3 --net net --ip 172.18.0.103 spring:v1.0
我們可以查看日志看是否啟動成功
docker logs s1
我們可以測試一下看tomcat容器是否訪問mysql容器
四、創(chuàng)建Nginx容器
首先我們需要一個nginx鏡像
docker pull nginx
我們肯定是需要通過nginx負(fù)載均衡和動靜分離的,但是容器內(nèi)不能修改文件,所以我們繼續(xù)使用目錄掛載的形式
①創(chuàng)建nginx的配置文件目錄并將配置文件放入
mkdir -p ?/soft/nginx/conf.d
?注意:這里的服務(wù)器的集群和我們的Tomcat容器IP一致
#服務(wù)器的集群 upstream tomcatList { server 172.18.0.101:8080 weight=1; server 172.18.0.102:8080 weight=1; server 172.18.0.103:8080 weight=1; }
②同時將我們的靜態(tài)文件放入
根據(jù)鏡像創(chuàng)建容器
docker run -itd \
--name n1 \
-v /soft/nginx/conf.d:/etc/nginx/conf.d \
-v /soft/nginx/html:/etc/nginx/html \
-p 80:80 \
--net net \
--ip 172.18.0.105 \
nginx
現(xiàn)在我們訪問一下看看,是可以進(jìn)行訪問的
但是這里還有一個小小的問題如果我們發(fā)送請求帶有www.zkingedu.com就訪問不了所以我們要加映射關(guān)系,找到C:\Windows\System32\drivers\etc\hosts添加映射關(guān)系
因為這里需要的是www.zkingedu.com,我們加的時候就寫這個。
現(xiàn)在通過www.zkingedu.com也是可以訪問的
至此根據(jù)nginx的動靜分離項目就部署完了
?
到這里我的分享就結(jié)束了,歡迎到評論區(qū)探討交流??!
??如果覺得有用的話還請點個贊吧 ??文章來源:http://www.zghlxwxcb.cn/news/detail-816996.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-816996.html
到了這里,關(guān)于【Docker】安裝Nginx容器并部署前后端分離項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!