天天看點

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

首先,了解到建立docker鏡像有兩種常用的方法,分别是通過已有容器進行修改建立新的鏡像并push,另一種是編寫dockerFile使用dockerBuild直接将自己的系統與項目建立鏡像。當然,dockerFile在後者是必須的,盡管有其他将本地檔案添加到容器中的方式,使用dockerFile無疑能夠更為友善,并且還能夠完成對環境,插件的各種配置。

嘗試使用Node.js作為基礎環境,在dockerHub的Node.js的官方網頁上找到一個合适的鏡像并push到Linux虛拟機上

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

選擇一個版本,使用指令(我這裡選擇的是14.1.0-buster版本):

sudo docker pull node:14.1.0-buster
           

使用

對本地的鏡像進行檢視

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

之後,我們希望在這個環境的基礎上建立一個vue項目,通過dockerfile,我們可以指定這個項目位于本機的何處,docker容器的工作目錄,添加插件等等:

FROM node:14.1.0-buster
ADD ./src /app
WORKDIR /app
ENV DEBCONFIG_NOWARNINGS yes
RUN apt-get update -y && \
    apt-get upgrade -y && \
    apt-get install -y \
        build-essential -y \
				curl \
				nmap \
				openvas \
				git \
				nano \
    && rm -rf /var/lib/apt/lists/*
RUN npm install -g @vue/[email protected]

含義為:我選擇使用的基礎鏡像名為node:14.1.0-buster;
将虛拟機下 ./src  檔案夾加入到鏡像中的app檔案家中;
将鏡像中的app檔案夾設為工作環境;
DEBUG設定:沒有WARNING提示;
在建立新鏡像時運作RUN後的代碼:
安裝更新更新一下插件:curl,nmap,openvas,git,nano。
這裡因為作業要求,安裝nmap和openvas兩個掃描器。之後删除lists檔案下不需要的插件,最後安裝某一個版本的vue(可以使用latest安裝最新的)
           

建立dockerFile後,使用以下指令建立一個新的鏡像

之後使用容器運作:

docker container run -it --name myweb -v pwd/src:/app -p 8080:8080 -d library/vuetest
           

設定容器名稱為myweb,設定端口映射為8080,設定鏡像來源是 vuetest

運作後,使用

docker exec -it myweb /bin/bash
           

進入容器指令行

在目前工作目錄(已經設定好了,就是app檔案夾)建立一個vue項目:并運作

vue create myweb
cd myweb
npm run serve
           

結果如下:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

我們在虛拟機的浏覽器上打開網址:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

可以看到安裝成功。

同時,在本地也自動建立了一個檔案目錄src,這個src檔案夾建立與終端打開的位置有關,内部包含了本項目的檔案,修改其中内容可以對項目進行修改。

為了測試可行性,我對其中的一個Hello.vue進行了修改,并在src下,myweb項目外編寫了一個測試行腳本test.sh。

下面,在目前src目錄外建立一個新的Dockerfile用于建立新鏡像

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加
嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加
FROM vuetest:latest
ADD ./src /app
WORKDIR /app
ENV DEBCONFIG_NOWARNINGS yes
RUN apt-get update -y && \
		apt-get upgrade -y && \
		apt-get install -y \
				build-essential -y \
				curl \
				nmap \
				openvas \
				git \
				nano \
		&& rm -rf /var/lib/apt/lists/*

這裡含義和上方的類似,首先基礎鏡像選擇已經安裝好vue的vuetest鏡像
(之後就可以在這次新建立的景象基礎上更改版本進行push)
将和dockerfile同目錄下的src檔案夾加入到鏡像中的app檔案夾下,進行插件的下載下傳更新等
和上方相比,除去了vue的下載下傳安裝
           

然後,在work目錄下(含有src檔案夾和dockerFile)打開終端,使用指令行:

$ docker image build -t whereissalm0n/vue_sh:v2 .

這裡v1是版本号,可以更換,便于管理
最後注意 "." 意思是該目錄下建立,忘記寫的話shell會提示缺少一個URL參數
           

之後使用

檢視是否成功

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

如有必要,為新鏡像建立tag(如果未建立tag或者是tag錯誤,将不予推送):

docker tag vue_sh whereissalm0n/vue_sh:v2
           

之後将鏡像上傳至dockerHub

docker image push whereissalm0n/vue_sh:v2
           

下面嘗試在Windows上啟動容器并運作:

進入docker Desktop for Windows,并登入,在Images—Remote Repositories中檢視

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

可以看到下方vue_sh:v2已經成功push

下面運作并且設定容器名與映射端口

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加
嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

成功後進入終端:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

嘗試檢視并運作腳本:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加
嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

掃描成功。

測試vue項目:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加
嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

至此在docker鏡像上建立一個vue項目并新增檔案夾就完成了。在這個過程中最重要的就是dockerFile的使用,正确的dockerFile編寫能夠讓鏡像的建立事半功倍。當然在沒有意識到這一問題之前,屢次出現未添加檔案,因為dockerFile指令寫錯添加錯誤檔案的情況。

事實上,也是必然的,這一項目和腳本自然而然也被存儲在了本機上,在Linux檔案夾中(由于使用了WSL2,windows規定了docker鏡像存儲的位置)我們可以找到項目檔案與編寫的腳本檔案:

嘗試建立一個包含vue項目的docker鏡像并進行檔案修改與添加

這也就意味着,我們可以在本機或虛拟機沒有某個特定開發環境的情況下,在docker容器上部署相應環境,在本機對檔案項目進行編輯修改,同樣也可以達到開發的目的。

項目的下一步,就是編寫合适的web程式以及腳本将若幹掃描器整合,并将整個web項目添加到到鏡像中并上傳。

繼續閱讀