docker打包前端項(xiàng)目的實(shí)現(xiàn)示例
?? 前言
之前有出過(guò)一期打包后端項(xiàng)目和數(shù)據(jù)庫(kù)的教程,現(xiàn)在填個(gè)坑,出一期打包前端項(xiàng)目的教程,廢話不多說(shuō),我們直接進(jìn)入正題。
?? 編寫(xiě)Dockerfile文件
老規(guī)矩,先描述項(xiàng)目結(jié)構(gòu),結(jié)構(gòu)圖如下:

進(jìn)入前端項(xiàng)目文件夾,我的項(xiàng)目根目錄是Web,因此,之后都是以Web來(lái)指代根目錄。在Web文件夾下面新建一個(gè)Dockerfile文件,用記事本打開(kāi),粘貼以下內(nèi)容:
# 使用官方的 Nginx 鏡像作為基礎(chǔ)鏡像 FROM nginx:alpine # 刪除默認(rèn)的 Nginx 靜態(tài)頁(yè)面 RUN rm -rf /usr/share/nginx/html/* # 復(fù)制構(gòu)建后的靜態(tài)文件到 Nginx 的默認(rèn)文件夾 COPY . /usr/share/nginx/html # 將 Nginx 配置文件復(fù)制到容器中 (可選) #COPY ./nginx.conf /etc/nginx/nginx.conf # 暴露 Nginx 的默認(rèn)端口 EXPOSE 80 # 啟動(dòng) Nginx CMD ["nginx", "-g", "daemon off;"]
因?yàn)榍岸隧?xiàng)目沒(méi)有全局用到框架,因此沒(méi)有打包,所以在Dockerfile文件中直接將當(dāng)前目錄,也就是web復(fù)制到容器的/usr/share/nginx/html文件夾下,以我淺薄的一些nginx知識(shí)解釋一下,這個(gè)路徑是用來(lái)存放各種靜態(tài)資源的,包括我們的網(wǎng)頁(yè)。
這個(gè)Dockerfile文件我們之前的博客也說(shuō)過(guò),是用于創(chuàng)建鏡像的,因此,文件編寫(xiě)好之后我們就可以著手開(kāi)始創(chuàng)建鏡像了。
執(zhí)行以下這條指令以創(chuàng)建鏡像:
docker build -t my-frontend-app .
再執(zhí)行下面這條指令以創(chuàng)建容器:
docker run -d -p 9999:80 --name frontend-container my-frontend-app
再執(zhí)行下面這條指令以連接網(wǎng)絡(luò):
docker network connect qiuchuang frontend-container
因?yàn)橹澳瞧┛鸵呀?jīng)提到過(guò)后端容器和數(shù)據(jù)庫(kù)容器都連接到了這個(gè)名為“qiuchuang”的網(wǎng)絡(luò),因此,如此一來(lái),三個(gè)容器之間就可以通信了。
打開(kāi)docker-desktop,可以查看到容器已經(jīng)創(chuàng)建完成,點(diǎn)擊相應(yīng)的連接,就可以跳轉(zhuǎn)到部署在本地的前端項(xiàng)目啦(當(dāng)然,別忘了開(kāi)啟后端容器和數(shù)據(jù)庫(kù)容器)。
?? 小插曲
在部署的時(shí)候遇到兩個(gè)小問(wèn)題,在這里記錄一下:
- nacicat導(dǎo)入原項(xiàng)目的數(shù)據(jù)時(shí)會(huì)存在導(dǎo)入為空的情況,具體表現(xiàn)在“數(shù)據(jù)表在,但數(shù)據(jù)不全,甚至直接為空”,解決方法非常的簡(jiǎn)單粗暴,我嘗試了一下直接ctrl+c和ctrl+v,沒(méi)想到竟然可以,當(dāng)然前提是表已經(jīng)建立好了,可以直接粘貼數(shù)據(jù)進(jìn)去,妙哉!
- 我的前端項(xiàng)目有一處涉及跳轉(zhuǎn)到詳情頁(yè)的代碼,這行代碼的實(shí)現(xiàn)原理是通過(guò)改變鏈接實(shí)現(xiàn)的,問(wèn)題來(lái)了,當(dāng)時(shí)在vscode編寫(xiě)的時(shí)候鏈接路徑中有一處是
news-details,但是實(shí)際上文件夾是News-details,就只有首字母大小寫(xiě)不一樣,因?yàn)樗拗鳈C(jī)是mac系統(tǒng),因此大小寫(xiě)不敏感,但是我們的nginx是基于linux的alpine發(fā)行版,對(duì)大小寫(xiě)敏感,這導(dǎo)致我點(diǎn)擊詳情頁(yè)鏈接會(huì)顯示404 NOT FOUND,后來(lái)花了好一番功夫才找到這個(gè)問(wèn)題所在,看來(lái)下次寫(xiě)代碼要細(xì)心一點(diǎn)了(doge)。
?? 尾聲
目前使用這種原始的方法去部署多容器項(xiàng)目還是挺麻煩的,因此后續(xù)肯定是還要學(xué)習(xí)docker-compose的知識(shí)的,過(guò)幾天還會(huì)推出相關(guān)的教程,大家可以期待一下,我們下期再見(jiàn)??。
到此這篇關(guān)于docker打包前端項(xiàng)目的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)docker打包前端項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows安裝docker-desktop的詳細(xì)步驟
這篇文章主要介紹了Windows安裝docker-desktop的詳細(xì)步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-03-03
Docker下安裝ElasticSearch和Kibana的示例代碼
這篇文章主要介紹了Docker下安裝ElasticSearch和Kibana的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
docker中psql數(shù)據(jù)庫(kù)備份與恢復(fù)詳解
在本篇文章里小編給大家整理的是關(guān)于docker中psql數(shù)據(jù)庫(kù)基本操作內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02
使用docker compose搭建consul集群環(huán)境的例子
consul是HashCorp公司推出使用go語(yǔ)言編寫(xiě)的開(kāi)源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置,今天給大家普及使用docker compose搭建consul集群環(huán)境的方法及consul基本知識(shí)講解,感興趣的朋友一起看看吧2021-06-06
使用docker搭建jenkins自動(dòng)化工具的實(shí)現(xiàn)
大家在工作中,應(yīng)該都有使用過(guò)jenkins 自動(dòng)化打包或發(fā)布,本文主要介紹了使用docker搭建jenkins自動(dòng)化工具的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Docker構(gòu)建ELK Docker集群日志收集系統(tǒng)
為了在Docker集群中更好的管理查看日志 我們使用Docker 來(lái)搭建集群的ELK日志收集系統(tǒng),這篇文章介紹了Docker構(gòu)建ELK Docker集群日志收集系統(tǒng)的相關(guān)資料,需要的朋友可以參考下2016-11-11
關(guān)于Docker加載鏡像連接超時(shí)的快速解決辦法
文章指導(dǎo)如何檢查WSL和Docker狀態(tài),解決網(wǎng)絡(luò)連接超時(shí)問(wèn)題,包括驗(yàn)證DNS解析、調(diào)整網(wǎng)絡(luò)設(shè)置及重啟服務(wù),確保Docker能正常拉取鏡像,本文重點(diǎn)給大家介紹Docker加載鏡像連接超時(shí)的解決辦法,感興趣的朋友跟隨小編一起看看吧2025-08-08

