[Web] Angular + Docker 實作

 Docker 的安裝就直接略過了。(因為操作中沒遇到什麼困難,很快就好了)


Docker的操作基本上都在自己要移植的程式的路徑底下執行指令。


包好後會存在Docker安裝的資料夾裡。(實際要google一下,因應作業系統版本的不同。儲存的路徑也會不一樣)


包的方式是直接把自己的所有Angular的檔案放到要移植的電腦,並且以那台電腦做Docker的執行。完成後就可以讓自己的程式順利的在其他電腦上執行。


1. 在程式的路徑下建立一個檔案叫做Dockerfile

建立好後在裡面輸入以下指令

FROM node:14.7.0-alpine As builderapp

WORKDIR /usr/src/app

COPY package.json package-lock.json ./


RUN npm install

COPY . .

RUN npm run build --prod


FROM nginx:1.19-alpine

COPY --from=builderapp /usr/src/app/dist/Nathan-Angular/ /usr/share/nginx/html

儲存好後,就可以開始執行打包的作業囉


2. 下指令打包

假設說你的Angular 當初建立的名稱是 nathan-angular

在要打包的路徑下輸入指令

docker build . -t nathan-angular


打包完成後會顯示

Successfully built 7ffcaXXXXX

Successfully tagged nathan-angular:latest


3. 查看打包完成的檔案

下指令

docker images (會列出目前有的image檔案,經以上執行完後會有打包的檔案)

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

<none>              <none>              25494bfc53e1        43 seconds ago      1.29GB

nathan-angular      latest              7ffcadf6cc05        43 seconds ago      41.4MB

nathan-express      latest              e4e43b8603b9        44 hours ago        83.7MB

docker-demo-app     latest              50610d686f12        2 days ago          74.3MB

就可以看到打包好的檔案囉。


4. 執行己打包好的image檔

docker run --name nathan-angular -d -p 8088:80 nathan-angular

這邊的8088代表自己的電腦port 8088 對應到虛擬機的80 port.


執行後會跳出一段字碼,我的如下:

2d8acc94420daabdaccb9509da8dc51149dad9cb669b701b0df5a4bb9110b681


之後打開自己的 http://localhost:8088/

之前寫好的前端網頁就可以正常執行了。


執行後想要關閉正在執行的container的話,記得輸入

docker ps (-a)

會列出在執行的container (加入-a會列出全部的container), 裡面會有剛剛我們執行的nathan-angular,配合對應的ID

輸入以下指令就可以停用與刪除

docker stop container_id

docker rm container_id

PS: 不停用的話無法對image做刪除的動作喔。


5. 刪除己打包好的image

我在打包的過程式會產生(原因不是很清楚)

<none>              <none>              25494bfc53e1        43 seconds ago      1.29GB

如果要刪除這種none名稱的image的話輸入以下指令

docker images|grep none|awk '{print $3 }'|xargs docker rmi

如果有要刪除確定名稱的image檔的話,假設說要刪除剛剛建立好的nathan-angular

docker rmi nathan-angular:latest

PS: latest指的是TAG


參考 reference: 

主參考

https://blog.comtradedigital.com/blog/lets-make-a-docker-image


打包成docker檔

https://github.com/HcwXd/docker-tutorial


刪除none名稱的image

https://www.itread01.com/content/1549609234.html


刪除正常名稱的image

https://stackoverflow.com/questions/48551330/remove-a-local-docker-image-tag-without-deleting-the-image


刪除與停用container

https://medium.com/@william._./docker-%E7%A7%BB%E9%99%A4%E5%81%9C%E7%94%A8%E6%8C%87%E4%BB%A4-%E4%B8%89-e71c06f56b30








留言

熱門文章