docker+Nginx部署前端項(xiàng)目的詳細(xì)過程記錄
相關(guān)配置安裝
安裝Docker
yum install docker
啟動(dòng)服務(wù) start docker
systemctl start docker
Docker中拉取nginx
鏡像
docker pull nginx
創(chuàng)建配置文件
我們需要在根目錄下創(chuàng)建Dockerfile文件和default.conf文件。
其中default.conf文件的名稱是什么無所謂,只要在配置文件中注意使用相同名稱即可。
Dokcerfile文件具體內(nèi)容如下:
FROM nginx:latest # 將項(xiàng)目根目錄下dist文件夾下的所有文件復(fù)制到鏡像中 /usr/share/nginx/html/ 目錄下 COPY dist/ /usr/share/nginx/html/ COPY default.conf /etc/nginx/conf.d/default.conf
FROM nginx:latest
: 命令的意思該鏡像是基于 nginx:latest 鏡像而構(gòu)建的。COPY dist/ /usr/share/nginx/html/
:命令的意思是將項(xiàng)目根目錄下 dist 文件夾下的所有文件復(fù)制到鏡像中/usr/share/nginx/html/
目錄下。
這里鏡像中的目錄我們不要?jiǎng)?,但需要保證我們項(xiàng)目的打包目錄是dist/
,或者自定義到你打包的目錄下。
COPY default.conf /etc/nginx/conf.d/default.conf
命令的意思是將 Nginx 目錄下的 default.conf 復(fù)制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置來替換 Nginx 鏡像里的默認(rèn)配置。
這里鏡像中的目錄我們不要?jiǎng)樱枰WC我們編寫的文件名也為default.conf
,或者與你自己寫的文件名對(duì)應(yīng)
default.conf
下面的配置直接照抄就好,特別注意,監(jiān)聽的端口號(hào)并不需要?jiǎng)樱@里的80端口指的是容器的端口,最后我們會(huì)將容器的端口映射到我們宿主服務(wù)器的端口,比如映射到8888端口。
8888:80
然后 注意修改為自己的服務(wù)器IP地址
完整配置:
upstream my_server{ server 121.41.4.33:3000; # 后端server 地址 keepalive 2000; } server { listen 80; #這里的端口號(hào)不要?jiǎng)樱?0端口指的是容器的端口,最后我們會(huì)將容器的端口映射到我們宿主服務(wù)器的端口,比如映射到8888端口 server_name 111.20.xxx.xxx; # 修改為docker服務(wù)宿主機(jī)的ip/域名 #charset koi8-r; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/error.log error; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } # 這里就是和vue本地代理的意思一樣,已a(bǔ)pi開頭的路徑都代理到本機(jī)的3000端口 location /api/ { proxy_pass http://my_server/api; proxy_set_header Host $host:$server_port; rewrite ^/api/(.*) /$1 break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
項(xiàng)目打包與部署
將打包項(xiàng)目,把dist
文件夾和剛剛創(chuàng)建的Dockerfile
,default.conf
放到同一目錄,并上傳到服務(wù)器。
比如,我的代碼存放位置是/home/test
目錄。
然后需要構(gòu)建鏡像
docker build -t test .
docker build -t
我們并不需要?jiǎng)樱?/p>
后面的test是我們構(gòu)建的鏡像的名稱,.
代表需要進(jìn)行構(gòu)建的代碼的存放位置,這里是.
是因?yàn)槲耶?dāng)期所在目錄就是/home/test
,并且我的項(xiàng)目的三個(gè)文件就位于/home/test
目錄下。
如果我們此時(shí)位于其他目錄,當(dāng)前目錄下沒有要進(jìn)行鏡像打包的文件,那就需要更改路徑。
比如:
dokcer build -t test /home/test
然后使用dokcer images
可以查看我們已經(jīng)存在的鏡像
鏡像構(gòu)建好后,我們就可以拿這個(gè)鏡像啟動(dòng)一個(gè)容器
docker run -d -p 8888:80 --name test-image test
- -d 后臺(tái)方式運(yùn)行
- -p 8888:80 端口映射,將宿主的8888端口映射到容器的80端口
- –name 容器名 鏡像名
然后我們可以使用docker ps
查看當(dāng)前正在運(yùn)行的容器
并且使用IP地址和端口號(hào)訪問當(dāng)前的項(xiàng)目
注意
上面我們進(jìn)行了端口映射,那就需要在服務(wù)器中開啟要使用的端口,
我們可以在云服務(wù)器中的安全組進(jìn)行設(shè)置。
或者使用命令設(shè)置
查看已開放端口命令:firewall-cmd --list-all
- 查看防火墻狀態(tài):active (running) 即是開啟狀態(tài)
systemctl status firewalld
- 查看已開發(fā)端口命令:firewall-cmd --list-all
- 新增防火墻開放端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 開放端口后需要重新加載防火墻:
firewall-cmd --reload
一些相關(guān)指令
如果我們不再需要這個(gè)容器和鏡像,
首先需要先停止這個(gè)容器,然后在移出容器和鏡像。
首先拿docker ps
找到指定容器的ID,
使用docker stop [ID]
停止容器
docker rm [ID]
移除容器
然后拿docker images
查看已存在的鏡像ID,
使用docker rmi [ID]
移除鏡像
可能我們的docker沒有設(shè)置開機(jī)啟動(dòng):
systemctl start docker # 啟動(dòng)docker systemctl status docker # 查看docker的運(yùn)行狀態(tài)
一個(gè)相關(guān)報(bào)錯(cuò):
關(guān)于:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
關(guān)于今天使用Docker時(shí)報(bào)了以下錯(cuò)誤:
[centos@localhost ~]$ docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
分析報(bào)錯(cuò)的原因:
報(bào)錯(cuò)的翻譯:無法連接到 unix:///var/run/docker.sock 上的 Docker 守護(hù)程序。 docker 守護(hù)進(jìn)程是否正在運(yùn)行?
通過翻譯完報(bào)錯(cuò),可以看出報(bào)錯(cuò)的原因是因?yàn)閐ocker的服務(wù)沒啟動(dòng)
解決方法:
1、首先啟動(dòng)docker服務(wù)
[root@localhost /]# systemctl start docker
2、查看docker服務(wù)當(dāng)前狀態(tài)
[root@localhost /]# systemctl status docker
就此,以上的報(bào)錯(cuò)就成功解決!
開機(jī)自啟動(dòng)Docker
為了避免以上的問題重復(fù)出現(xiàn),可以設(shè)置docker開啟自啟動(dòng)!
[root@localhost /]# systemctl enable docker
后續(xù),我們將使用docker和github actions實(shí)現(xiàn)自動(dòng)化部署。
總結(jié)
到此這篇關(guān)于docker+Nginx部署前端項(xiàng)目的文章就介紹到這了,更多相關(guān)docker+Nginx部署前端項(xiàng)目內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
云原生教程之使用Docker部署webssh工具sshwifty
Sshwifty是一個(gè)開源的WebSSH?&?WebTelnet客戶端,下面這篇文章主要給大家介紹了關(guān)于云原生教程之使用Docker部署webssh工具sshwifty的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03教你如何從正在運(yùn)行的容器創(chuàng)建?Docker?映像
這篇文章主要介紹了如何從正在運(yùn)行的容器創(chuàng)建?Docker?映像,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解
這篇文章主要介紹了關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解,Docker在創(chuàng)建容器時(shí)有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要去指定,其他三種模式需要在創(chuàng)建容器時(shí)使用–net去指定,需要的朋友可以參考下2023-07-07