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