本地使用docker打包、部署鏡像

第一次在本地使用docker打包、部署鏡像

首先說下我的筆記本系統是MACOS 10.15.4
我安裝的docker版本是v19.03.5

一、項目結構如下:

這是一個react項目,打包後的靜態資源路徑是dist目錄。
在這裏插入圖片描述


二、重點看Dockerfile文件和docker/nginx.conf文件

1. Dockerfile是一個用來構建鏡像的文本文件,詳細介紹可以參考鏈接:Docker Dockerfile

我的Dockerfile內容如下:

FROM nginx

WORKDIR /usr/src/app/

COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf

COPY ./dist  /usr/share/nginx/html/

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

Dockerfile中的大寫單詞是命令,各個命令的含義解釋:

FROM:定製的鏡像都是基於 FROM 的鏡像,這裏的 nginx 就是定製需要的基礎鏡像。後續的操作都是基於 nginx。
RUN:用於執行後面跟着的命令行命令。有以下倆種格式:
WORKDIR:指定工作目錄。用 WORKDIR 指定的工作目錄,會在構建鏡像的每一層中都存在。WORKDIR 指定的工作目錄,必須是提前創建好的。docker build 構建鏡像過程中的,每一個 RUN 命令都是新建的一層。只有通過 WORKDIR 創建的目錄纔會一直存在。
COPY:複製指令,從上下文目錄中複製文件或者目錄到容器裏指定路徑。
EXPOSE:僅僅只是聲明端口。作用:幫助鏡像使用者理解這個鏡像服務的守護端口,以方便配置映射。在運行時使用隨機端口映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的端口。
CMD:類似於 RUN 指令,用於運行程序,但二者運行的時間點不同:CMD 在docker run 時運行。RUN 是在 docker build。作用:爲啓動的容器指定默認要運行的程序,程序運行結束,容器也就結束。CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。注意:如果 Dockerfile 中如果存在多個 CMD 指令,僅最後一個生效。

2. docker/nginx.conf

server {
    listen 80;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size 100m;

    root /usr/share/nginx/html;

    location / {
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
    	# 此處爲後端地址
        proxy_pass http://www.XXX.com/;
    }
}

三、執行docker build命令製作鏡像

我執行的命令是:docker build -t mydocker .
-t : 爲鏡像打一個tag,tag名稱爲mydocker
不要忘了後面有個點,表示在當前路徑下製作鏡像

四、執行docker run部署鏡像

我執行的命令是:docker run -p 80:80 mydocker
-p 是指定映射到本機的端口
docker run -p 本機端口:鏡像端口 鏡像名

五、打開localhost:80就可以看到項目啦

初次體驗docker本地部署,很多原理和docker命令還不太清楚,以後還會進一步學習~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章