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

進(jìn)入前端項目文件夾,我的項目根目錄是Web,因此,之后都是以Web來指代根目錄。在Web文件夾下面新建一個Dockerfile文件,用記事本打開,粘貼以下內(nèi)容:
# 使用官方的 Nginx 鏡像作為基礎(chǔ)鏡像 FROM nginx:alpine # 刪除默認(rèn)的 Nginx 靜態(tài)頁面 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 # 啟動 Nginx CMD ["nginx", "-g", "daemon off;"]
因為前端項目沒有全局用到框架,因此沒有打包,所以在Dockerfile文件中直接將當(dāng)前目錄,也就是web復(fù)制到容器的/usr/share/nginx/html文件夾下,以我淺薄的一些nginx知識解釋一下,這個路徑是用來存放各種靜態(tài)資源的,包括我們的網(wǎng)頁。
這個Dockerfile文件我們之前的博客也說過,是用于創(chuàng)建鏡像的,因此,文件編寫好之后我們就可以著手開始創(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
因為之前那篇博客已經(jīng)提到過后端容器和數(shù)據(jù)庫容器都連接到了這個名為“qiuchuang”的網(wǎng)絡(luò),因此,如此一來,三個容器之間就可以通信了。
打開docker-desktop,可以查看到容器已經(jīng)創(chuàng)建完成,點擊相應(yīng)的連接,就可以跳轉(zhuǎn)到部署在本地的前端項目啦(當(dāng)然,別忘了開啟后端容器和數(shù)據(jù)庫容器)。
?? 小插曲
在部署的時候遇到兩個小問題,在這里記錄一下:
- nacicat導(dǎo)入原項目的數(shù)據(jù)時會存在導(dǎo)入為空的情況,具體表現(xiàn)在“數(shù)據(jù)表在,但數(shù)據(jù)不全,甚至直接為空”,解決方法非常的簡單粗暴,我嘗試了一下直接ctrl+c和ctrl+v,沒想到竟然可以,當(dāng)然前提是表已經(jīng)建立好了,可以直接粘貼數(shù)據(jù)進(jìn)去,妙哉!
- 我的前端項目有一處涉及跳轉(zhuǎn)到詳情頁的代碼,這行代碼的實現(xiàn)原理是通過改變鏈接實現(xiàn)的,問題來了,當(dāng)時在vscode編寫的時候鏈接路徑中有一處是
news-details,但是實際上文件夾是News-details,就只有首字母大小寫不一樣,因為宿主機(jī)是mac系統(tǒng),因此大小寫不敏感,但是我們的nginx是基于linux的alpine發(fā)行版,對大小寫敏感,這導(dǎo)致我點擊詳情頁鏈接會顯示404 NOT FOUND,后來花了好一番功夫才找到這個問題所在,看來下次寫代碼要細(xì)心一點了(doge)。
?? 尾聲
目前使用這種原始的方法去部署多容器項目還是挺麻煩的,因此后續(xù)肯定是還要學(xué)習(xí)docker-compose的知識的,過幾天還會推出相關(guān)的教程,大家可以期待一下,我們下期再見??。
到此這篇關(guān)于docker打包前端項目的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)docker打包前端項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker實現(xiàn)Mariadb分庫分表及讀寫分離功能
這篇文章主要給大家介紹了關(guān)于Docker實現(xiàn)Mariadb分庫分表及讀寫分離功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
詳解Docker創(chuàng)建Mysql容器并通過命令行連接到容器
本篇文章主要介紹了Docker創(chuàng)建Mysql容器并通過命令行連接到容器,具有一定的參考價值,有興趣的可以了解一下。2017-01-01
詳解Docker 容器跨主機(jī)多網(wǎng)段通信解決方案
這篇文章主要介紹了Docker 容器跨主機(jī)多網(wǎng)段通信解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

