docker入門篇-部署靜態頁面

docker入門篇-部署靜態頁面

什麼是docker

Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基於 dotCloud 公司多年雲服務技術的一次革新,並於 2013 年 3 月以 Apache 2.0 受權協議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目後來還加入了 Linux 基金會,併成立推進開放容器聯盟(OCI)。html

Docker 使用 Google 公司的 Go 語言 開發實現,基於 Linux 內核的 cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於操做系統層面的虛擬化技術。因爲隔離的進程獨立於宿主和其它隔離的進程,所以稱其爲容器。最初實現是基於 LXC,從 0.7 版本後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,進一步演進使用 runC 和 containerd。前端

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的建立和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷。vue

docker與前端應用的結合

前端應用使用docker能夠帶來哪些優點呢?node

  1. 環境一致性

好比前端應用須要部署在多臺虛擬機上,那麼配置多臺虛擬機就須要人爲操做,增長修改配置,好比node版本升級,都須要一臺一臺進行,十分浪費時間,並且容易出錯。可是使用docker技術,只須要配置一份鏡像就能夠,十分方便。nginx

  1. 方便遷移

Docker 確保了運行環境的一致性,使得應用的遷移更加容易。能夠很輕易將在一個平臺上運行的應用,遷移到另外一個平臺上,而不用擔憂運行環境的變化致使應用沒法正常運行。好比接到任務說下週要加一個分區,或者客戶要求部署私有云,能夠很放心的說鏡像拿走,而不用擔憂環境問題。git

  1. 快速部署、回滾

得益於 Docker 使用的分層存儲和鏡像技術,使得擴展鏡像變得很是簡單。能夠預先把程序須要的依賴,靜態資源等在構建過程當中添加到鏡像,在須要的時候啓動該容器實現快速部署、回滾、止血。好比當出現線上事故須要回滾時,傳統作法是觸發某些自動化工具去拉代碼裝依賴打包最後部署,一旦某個環節出了問題,譬如網絡被牆了致使依賴拉不下來,構建失敗等等,將會致使更驗證的問題。docker

docker安裝

macOS瀏覽器

brew cask install dockerbash

安裝好以後,會出如今mac的應用中,打開docker應用,遇到下載慢的問題能夠把homebrew包地址修改成國內鏡像(中科大鏡像等)網絡

其餘系統安裝 yeasy.gitbooks.io/docker_prac…

使用docker部署前端應用

####打包前端出dist

vue小項目舉例,使用官方cli3快速生成項目

vue create docker-vue

這裏使用yarn打包和啓動項目,

cd docker-vue

yarn run build

打包出dist文件夾,方便一會打包進docker鏡像

製做docker鏡像

使用docker官方的nginx鏡像

docker pull nginx:1.14

查看已安裝鏡像

docker image ls

修改nginx配置文件

在當前目錄(docker-vue)下建立nginx配置文件 nginx.conf 配置文件代碼以下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 80 default_server;
        server_name _;

        location  / {
        root /usr/share/nginx/html;
        index  index.html ;
        try_files $uri $uri/ /index.html;
        }
    }

}



複製代碼

Dockerfile文件修改

在當前目錄(docker-vue)下,建立Dockerfile文件,Dockerfile 是一個文本文件,其內包含了一條條的 指令(Instruction),每一條指令構建一層,所以每一條指令的內容,就是描述該層應當如何構建。

FROM nginx:1.14
LABEL maintainer "dale_na@163.com"
ADD ./dist/ /usr/share/nginx/html
ADD nginx.conf /etc/nginx/
EXPOSE 80

複製代碼

構建自定義鏡像

docker build -t dale_docker .

--tag, -t: 鏡像的名字及標籤

啓動自定義鏡像

docker run -d -p 8080:80 dale_docker

-d: 後臺運行容器,並返回容器ID

-p: 指定端口映射,格式爲:主機(宿主)端口:容器端口

若是以上配置都操做正確的話,此時打開本地瀏覽器,輸入 http://localhost:8080/ 就會看到剛剛本身新建的vue項目!

其餘docker排查錯誤的命令

  1. 查看當前全部docker進程 docker ps -a
  2. 查看容器狀態,-f實時刷新 docker logs -f 容器id
  3. 刪除容器 docker container rm 容器id
相關文章
相關標籤/搜索