[部署02] Docker 部署vue專案

woow_wu7發表於2020-03-21

[部署02] Docker 部署vue專案

導航

[深入01] 執行上下文
[深入02] 原型鏈
[深入03] 繼承
[深入04] 事件迴圈
[深入05] 柯里化 偏函式 函式記憶
[深入06] 隱式轉換 和 運算子
[深入07] 瀏覽器快取機制(http快取機制)
[深入08] 前端安全
[深入09] 深淺拷貝
[深入10] Debounce Throttle
[深入11] 前端路由
[深入12] 前端模組化
[深入13] 觀察者模式 釋出訂閱模式 雙向資料繫結
[深入14] canvas
[深入15] webSocket
[深入16] webpack
[深入17] http 和 https
[深入18] CSS-interview
[react] Hooks

[部署01] Nginx
[部署02] Docker 部署vue專案
[部署03] gitlab-CI

前置知識

一些單詞

prerequisites:先決條件
( meet the prerequisites 滿足前提條件 )

Community:社群的

associated:關聯的
( along with associated dependencies 以及相關的依賴關係 )

exactly:確切的
( "docker build" requires exactly 1 argument 確切的只需要1個引數 )

denied:拒絕
複製程式碼

yum命令

yum [options] [command] [package ...]

  • 1.列出所有可更新的軟體清單命令:yum check-update
  • 2.更新所有軟體命令:yum update
  • 3.僅安裝指定的軟體命令:yum install <package_name>
    • yum install -y git
    • -y 的作用是如果安裝過程中有詢問,都會自動的選擇yes
  • 4.僅更新指定的軟體命令:yum update <package_name>
  • 5.列出所有可安裝的軟體清單命令:yum list
  • 6.刪除軟體包命令:yum remove <package_name>
  • 7.查詢軟體包 命令:yum search
  • 8.清除快取命令:
    • yum clean packages: 清除快取目錄下的軟體包
    • yum clean headers: 清除快取目錄下的 headers
    • yum clean oldheaders: 清除快取目錄下舊的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的headers

(1) yum 和 rpm 的關係

  • ( rpm ) 只能安裝已經下載到本地機器上的 ( rpm包 )
  • ( yum ) 能 ( 線上 - 線上 ) 下載並安裝rpm包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是 rpm 工具所不具備的。

(2) yum 安裝的包的路徑

  • 注意檢視時,使用的是 rpm 命令
  • rpm -qa 查詢所有安裝的rpm包,可以配合grep命令
  • rpm -ql 列出某個具體包的所有- 檔案路徑
  • rpm的預設安裝路徑
    • /etc 一些設定檔案放置的目錄如
    • /etc/crontab/usr/bin 一些可執行檔案
    • /usr/lib /usr/lib64 一些程式使用的動態函式庫
    • /usr/share/doc 一些基本的軟體使用手冊與幫助文件
    • /usr/share/man 一些man page檔案
  • 如何檢視某個用 yum 安裝的包的具體路徑????
yum 的安裝的包的具體路徑路徑 --- 比如 python

// (1) yum install python ------------------------------- 安裝 python

(2) rpm -qa python -------------------------------------- 查詢具體安裝的 python 包的包名
// python-2.7.5-68.el7.x86_64

(3) rpm -ql python-2.7.5-68.el7.x86_64 ------------------ 列出這個包的所有檔案的路徑
複製程式碼

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

Docker

Docker三個基本概念 - Container Image Repository

  • Container 容器
  • Image 映象
  • Repository 倉庫
  • ( 映象 ) 是Docker執行 ( 容器 ) 的前提, ( 倉庫 ) 是存放映象的場所,( 可見映象 ) 更是 Docker 的核心

[部署02] Docker 部署vue專案

docker安裝

docker 安裝過程


(1) 如果安裝過Docker,先解除安裝 docker 或者 docker-engine 以及相關的依賴
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine


(2) 安裝Docker需要的相關外掛
- yum-utils
- device-mapper-persistent-data
- lvm2
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2


(3) 設定穩定的儲存庫 - 倉庫
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
    
    
(4) 啟用儲存庫(可選)
$ sudo yum-config-manager --enable docker-ce-nightly


(5) 安裝最新版本的Docker Engine-Community和containerd
$ sudo yum install docker-ce docker-ce-cli  containerd.io
    - 1. 查詢可用版本:
        - yum list docker-ce--show duplicates| sort-r
    - 2. 安裝指定版本
        - $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
        - $ sudo yum install docker-ce-[第一步查出來的版本號] docker-ce-cli-[在使用1中的查詢查出cli的版本] containerd.io


(6) 啟動 - 安裝完成後
$ sudo systemctl start docker


(7) 驗證 hello-world
$ sudo docker run hello-world
複製程式碼

[部署02] Docker 部署vue專案

docker常用命令

docker相關

docker相關

啟動docker --------------------- systemctl start docker   ( ctl是control的縮寫 )
停止docker --------------------- systemctl stop docker
重啟docker --------------------- systemctl restart docker
開機啟動docker ----------------- systemctl enable docker   ( !!!!!!! )
檢視docker概要資訊 ------------- docker info
檢視docker幫助文件 ------------- docker --help
檢視docker版本資訊 ------------- docker version

複製程式碼

Image映象相關

Image映象相關


列出所有映象 ---------------------------- docker images
             ---------------------------- docker images -a 所有映象
             ---------------------------- docker images -q 只顯示映象ID
             
搜尋映象 -------------------------------- docker search
             ---------------------------- docker search -s 40 nginx 列出收藏數字不小於40的nginx映象
             
下載映象 -------------------------------- docker pull
         -------------------------------- docker pull nginx 從遠端倉庫拉取nginx映象
         -------------------------------- docker pull nginx:[tag] 拉取指定版本
         -------------------------------- docker pull nginx:7 拉去7版本
         
刪除映象 -------------------------------- docker rmi 
         -------------------------------- docker rmi nginx 刪除最新的ngix映象,latest
         -------------------------------- docker rmi nginx:7 刪除具體的某個映象,需要映象名稱和tag版本號
         -------------------------------- docker rmi -f nginx:7 強制刪除某個映象,必須映象已經建立的容器正在執行時使用
         -------------------------------- docker rmi -f nginx centos 刪除多個映象,用空格隔開
         -------------------------------- docker rmi -f $(docker images -qa) 刪除全部映象
複製程式碼

container容器相關

container容器相關


新建一個容器:
docker run -it --name 容器名稱 映象ID ------------ 來執行一個容器,取別名,互動模式執行,以及分配一個偽終端
-i  以互動模式執行容器
-t  為容器重新分配一個偽輸入終端
--name  為容器指定一個名稱
- d 後臺執行容器,並返回容器ID


列出正在執行的容器 ------------------------------ docker ps
列出所有的容器 ---------------------------------- docker ps -a
列出最近建立的三個容器 -------------------------- docker ps -n 3
列出已經停止的容器 ------------------------------ docker ps -f status=exited

退出容器 ---------------------------------------- exit (或者ctrl+p+q)
進入容器 ---------------------------------------- docker attach 容器ID | 容器名稱
啟動容器 ---------------------------------------- docker start 容器ID | 容器名稱
重啟容器 ---------------------------------------- docker restart 容器ID | 容器名稱
停止容器 ---------------------------------------- docker stop 容器ID | 容器名稱
暴力停止容器 ------------------------------------ docker kill 容器ID | 容器名稱

刪除容器 ---------------------------------------- dokcer rm -f 容器ID | 容器名稱
刪除所有容器 ------------------------------------ docker rm -f $(docker ps -qa) 刪除全部容器
( 注意區分刪除映象 ------------------------------ docker rmi -f $(docker images -qa) 刪除全部映象
( 已經在執行的容器,或者映象建立的容器正在執行想刪除,用 -f 強制刪除 )

複製程式碼
container容器相關 - 進階命令


以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 映象ID
// 不會進入容器,並且會返回容器ID

進入容器,並執行命令 ---------------------- docker exec -it 容器ID | 容器名稱 執行命令
// 進入容器 ------------------------------- docker attach 容器ID | 容器名稱

檢視容器日誌 ------------------------------ docker logs 容器ID | 容器名稱

檢視容器程式 ------------------------------ docker top 容器ID | 容器名稱

宿主機拷貝檔案到容器 ---------------------- docker cp 需要拷貝的檔案或目錄 容器id|名稱 :容器目錄
容器檔案拷貝到宿主機 ---------------------- docker cp 容器id|名稱:檔案目錄|檔案 宿主機目錄
複製程式碼

[部署02] Docker 部署vue專案

例下圖:從宿主機中拷貝b.png到容器mycentos的tem檔案中

[部署02] Docker 部署vue專案

例下圖:容器拷貝資料夾到宿主機

[部署02] Docker 部署vue專案

例下圖:以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 映象ID

[部署02] Docker 部署vue專案

docker宿主機和容器之間的埠對映

docker run -it -p 8080:8000 映象ID

-p ------------ 指定埠對映,格式為 ( 主機埠:容器埠 )


// docker run -it mycomcat -p 8080:8000 映象ID -----------  指定宿主機和容器之間的埠對映
// docker run -di --name 容器名稱 映象ID -----------------  以守護方式啟動容器  
// docker run -it --name 容器名稱 映象ID ------------------ 來執行一個容器,取別名,互動模式執行,以及分配一個偽終端
複製程式碼

docker commit - 提交執行時的容器作為映象

  • docker commit -a='作者' -m='備註' 執行時的容器ID 新映象名稱
  • 提交後,就可以以這個映象建立容器了
docker commit -a='作者' -m='備註' 執行時的容器ID 新映象名稱
複製程式碼

[部署02] Docker 部署vue專案

docker push 推送映象到伺服器

  • 第一步: 註冊 hub.docker.com/,獲取docker id 和 密碼
  • 第二步:命令列登陸 ( docker login )
  • 第三步:打標籤 ( docker tag 映象名)
    • docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
  • 第三步:docker push 映象名稱 : TAG版本號
docker login

docker tag 映象名 Repository/name:tag
// 這個Repository是在hub上的repository,name也是在那裡設定的,tag名自己取比如1.1.1或者v1等

docker push 映象名:標籤號



----
具體如下
docker tag woow_wu7/tomcat hanxian/woow_wu7:v1
git push hanxian/woow_wu7:v1
複製程式碼

[部署02] Docker 部署vue專案

Dockerfile

  • Dockerfile語法
語法 說明
FROM 引用基礎映象 - from
MAINTAINER 維護者 - maintainer
name<郵箱或者電話>
LABEL 對映象的描述,類似於註釋 - label
name="xxxx" \
date="xxxx"
ENV 設定容器內的環境變數和常量
在其他地方通過 ( $ ) 來引用該環境變數的值
WORKDIR 當前的工作目錄,即是進入容器後,預設所在的當前目錄
RUN 在新建映象時執行的命令 - run
比如 RUN yum -y install Vim 表示用yum來安裝 Vim 包
EXPOSE 暴露埠 - expose
CMD 設定容器啟動後預設執行的命令和引數
比如 CMD /bin/bash
- 如果docker run的時候指定了其他CMD命令,Dockerfile中的CMD命令被忽略;如果定義了多個CMD,只有最後一個會執行
- CMD ["/bin/echo","hello docker"]
ENTRYPOINT 設定容器啟動時執行的命令
ADD ADD除了COPY還有額外解壓功能
COPY 拷貝檔案
  • dockerfile/dockerfile檔案,具體內容如下
FROM centos

MAINTAINER woow_wu7<woow.wu7@gmail.com>

LABEL name="hanxian"

ENV WORKPATH /
WORKDIR $WORKPATH

RUN yum -y install net-tools

RUN yum -y install vim

CMD /bin/bash
複製程式碼

使用 Dockerfile 構建自定義 centos映象 -- docker build

  1. 編寫號 Dockerfile 檔案
  2. 執行命令 docker build -f 路徑/Dockerfile檔名 -t Repository/name:tag.
    • 注意最後面的 .
  3. 構建映象成功後,就可以新建容器了 docker run -it --name 容器名稱 -p 8888:7000 映象ID
  4. 驗證 因為新增了一些包,所以使用 ifcofnig 或者 vim 看安裝好了沒
2. docker build

在根目錄下執行
docker build -f dockerfile/dockerfile -t hanxian/woow_wu7:v1 .
複製程式碼
3. build成功後,新建容器

docker run -it --name '隨便取' -p 2000:3000 e697c3799626
複製程式碼
4. 驗證

ifconfig
// vim a.txt
// wq
複製程式碼

[部署02] Docker 部署vue專案

RUN 和 CMD 和 ENTRYPOINT 三者的區別

  • RUN 執行命令並建立新的 ( 映象層 ),即在 ( docker build ) 時執行的命令,RUN 經常用於安裝軟體包。
  • CMD 設定 ( 容器 ) 啟動後預設執行的命令及其引數,即在 ( docker run ) 時執行的命令
    • 但 CMD 能夠被 docker run 後面跟的命令列引數替換
    • 多條CMD命令,則只會執行最後一條
  • ENTRYPOINT 配置 ( 容器 ) 啟動時執行的命令。
    • 不會被 docker run 的命令列引數指定的指令所覆蓋
    • 當CMD和ENTRYPOINT同時存在時,CMD會被當做引數傳遞給ENTRYPOINT
RUN CMD ENTRYPONT區別總結

(1) ( RUN ) 是構建映象時執行的命令 ( docker build ),而 ( CMD和ENTRYPOINT ) 是容器啟動時執行的命令 ( docker run )
(2) 三者都都支援 exec 和 shell 方式
(3) 常用方式:( 單獨的CMD ) 或者 ( 先ENTRYPOINT後面跟一個CMD )
(4) 多個CMD只有最後一個CMD生效
(5) 命令列帶引數,CMD將失效而ENTRYPOINT不受影響


案例1:
CMD ["catalina.sh", "run"]
- "catalina.sh":可執行檔案
- "run":引數


案例2:
ENTRYPOINT ["docker-entrypoint.sh"] // --- ENTRYPOINT 和 CMD 的組合

EXPOSE 6379
CMD ["redis-server"] // ------------------ 因為上面有ENTRYPOINT,所以CMD中的值會作為ENTRYPOINT的引數
複製程式碼

資料卷 volume

為什麼需要資料卷

  • 不能在宿主機上很方便的訪問容器中的檔案(資料)
  • 外部機器 和 (宿主機中的容器) 不能交換檔案
  • 無法在多個容器中共享資料
  • 刪除容器,容器中的資料將消失
  • 為了解決以上問題,docker中引入了 資料卷 (data volume) 機制

什麼是資料卷

  • 資料卷是存在於一個或多個容器中的特定檔案或資料夾,這個檔案或資料夾以獨立於 docker 檔案系統的形式存在於宿主機中
  • 在宿主機中的共享的那個檔案或者資料夾叫做資料卷
  • 資料卷的特點:其生存週期獨立於容器的生存週期
  • 資料卷的掛載點,預設是本機 /var/lib/docker/volumes 下的一個目錄

如何用命令實現資料卷 - 配置資料卷volume

  • docker run -it --name xxxx -p 9000:8000 -v /root/data:/root/data_container 映象ID
    • 表示通過映象ID新建容器,並建立資料卷,並且做埠對映
    • 注意點:
      • -v aaa:bbb 的冒號之間不能有空格
      • -v 後面的路徑必須是絕對路徑
      • -v 後面的目錄不存在,則會新建
      • -v /root/data 也可以是 -v ~root/data
案例:

docker run -it --name c2 -v /root/data:/root/data_container -p 3000:4000 470671670cac
(1) 以映象ID ( 470671670cac ) 建立容器
(2) 映象取名:c2
(3) 資料卷 ( 宿主目錄/root/data ) 對應 ( 容器目錄/root/data_container )
(4) 埠對映 3000:4000
(5) -p 是port的意思
複製程式碼

volume 相關命令

命令 說明
docker volume create 建立資料卷
docker volume inspect 顯示資料卷的詳細資訊
docker volume ls 列出所有的資料卷
docker volume prune 刪除所有未使用的 volumes,並且有 -f 選項
docker volume rm 刪除一個或多個未使用的 volumes,並且有 -f 選項

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

資料卷容器

  • 資料卷容器其實就是一個普通的容器,只是用來專門儲存資料的容器
  • 主要分為兩步
    • 第一步:建立啟動資料卷容器 c3 -v /volume
    • 第二步:建立啟動需要共享資料的業務容器 c1 c2 --volumes-from c3
  • 詳細過程
(1) 建立資料卷容器 c3
docker run -it --name=c3 -v /volume -p 1000:2000 5e35e350aded /bin/bash


(2) 建立需要共享資料可以做對映的普通容器 c1
docker run -it --name=c1 --volumes-from c3 -p 3000:4000 5e35e350aded /bin/bash
複製程式碼

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

docker 映象加速器

  • 如下圖
  • 如何驗證已經修改源成功?
    • 執行該命令cat /etc/docker/daemon.json 驗證registry-mirrors的值

[部署02] Docker 部署vue專案

Docker 部署 Vue專案 到伺服器

(1) 一個ceontos系統的伺服器


(2) 安裝docker


(3) docker pull nginx:tag ------------------------------------------------ 從遠端repository倉庫拉取nginx映象
// 檢視所有映象 docker images -a
// 搜尋某個映象 docker search -s 40 nginx
    // -s 40 表示收藏數不小於40的映象
// 刪除某個映象 docker rmi -f nginx:tag
// 刪除所有映象 docke rmi -f $(docker iamges -qa)
    // -rmi 中的 i表示 images 的意思
    
   
    
(4) 在宿主機上新建用來做對映的檔案
/home
    |---workspace
           |----nginx
                  |----conf.d
                  |----html.d
在 cong.d中建立 default.conf 檔案,裡面是nginx的配置
在 html.d中建立 index-test.html 檔案,隨便寫點東西
+++++ default.conf 內容如下 +++++ 
server {
    listen       80;
    server_name  localhost;
    # 原來的配置,匹配根路徑
    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}
    # 更該配置,匹配/路徑,修改index.html的名字,用於區分該配置檔案替換了容器中的配置檔案
    location / {
        root   /usr/share/nginx/html;
        index  index-test.html index.htm;
    }
}
+++++ index-test.html +++++ 
<html>
  <body>
    <h2>nginx server test and docker data volume test</h2>
  </body>
</html>




(5) 新建並執行容器
    docker run -d --name=nginx-8080 -p 8080:80 \
    -v /home/workspace/nginx/conf.d:/etc/nginx/conf.d \
    -v /home/workspace/nginx/html.d:/usr/share/nginx/html \
    6678c7c2e56c 


// docker run -it --name=nginx-8080 -p 8080:80 映象ID ----------------- 根據映象建立執行容器
// 注意這裡騰訊雲可以訪問不到,因為nginx預設埠是80不要寫成別的埠了
// 關閉容器:docker stop 容器ID | 容器名稱
// 注意:不要加上 /bin/bash 不然啟動後nginx對映的埠不能訪問

nginx ( 容器 ) 內的一些檔案位置:-------------------------- 注意是容器中的nginx,而不是真實的nginx專案路徑
- 日誌位置:/var/log/nginx/
- 配置檔案位置:/etc/nginx/
- 專案位置:/usr/share/nginx/html



(6) 反向代理 
1. 在宿主機上新新建conf.d2資料夾
/home
    |---wrokspace
           |----nginx
                  |----conf.d
                  |----html
                  |----conf.d2
2. 在 conf.d2 新建 default.conf 檔案
server {
    listen       80;
    server_name  localhost;
    location / {
        proxy_pass   http://49.233.215.163:8080;
    }
}
這樣訪問  http://49.233.215.163 會被代理到 http://49.233.215.163:8080



(7) 負載均衡
/home
    |---workspace
           |----nginx
                  |----conf.d
                  |----html
                  |----conf.d2
                  |----html3
html3檔案新建index-test.html
<html>
  <body>
    <h2>html - 8081</h2>
  </body>
</html>

執行命令
 docker run -it --name=payload -p 3000:3000 \
 -v /home/workspace/nginx/conf.d3:/etc/nginx/conf.d \
 6678c7c2e56c


(8) vue 專案上傳gitlab


(9) 伺服器中安裝 git 拉取前端在gitlab中的專案
1. yum install -y git
// -y 的作用是下載過程中可能會有對話讓你選擇yes還是no, -y就會自動的選擇yes
// yum 是從遠端下載安裝,rpm是從本地下載安裝
// 檢視是否安裝成功可以使用 git version  或者 git help -a 等命令來判斷
2. 下載完git後設定git相關的 user.name user.email ssh-keygen並把ssh key 新增到gitlab賬號中
git config --global user.name "your name"
git config --global user.email "your emial"
ssh-keygen -t rsa -C "your emai"
在gitlab中新增ssh key
在伺服器中新建資料夾用於拉取前端的專案 /home/workspace/project
git clone 下載專案
// 設定好name,email後可以通過 git config --global --list 檢視
// 公鑰的檔案路徑:/root/.ssh/id_rsa


(10) 安裝 node - 用於打包,本地啟動服務,執行 script 命令等
[1]
yum install epel-release
yum install nodejs
// node -v 檢視是否安裝成功,版本
// npm -v 檢視npm版本,注意node自帶npm
// 注意:這樣下載的node版本過低,需要升級!!!!!!!!!!!!!!!!!!!!!!
// 升級方法:https://juejin.im/post/5c09e47ee51d45721d71087d
    // npm install npm@latest -g
    // sudo npm cache clean -f
    // sudo npm install -g n
    // sudo n stable
[2] 上的方法放棄了,版本太低,升級麻煩,使用[2]
    下載nodejs最新的tar包
     wget -c https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz    
     
     解壓包
     tar -xvf node-v12.16.1-linux-x64.tar.xz
     
     部署bin檔案 - 相當於快捷方式
     ln -s ~/node-v12.16.1-linux-x64/bin/node /usr/bin/node
     ln -s ~/node-v12.16.1-linux-x64/bin/npm /usr/bin/npm
     
     測試
     node -v
     
    



(11) 打包前端專案
1. 進入在伺服器中下載好的前端專案資料夾 /home/workspace/project/hasaki
2. npm install 安裝前端依賴
3. npm run build
4. 這樣會生成一個資料夾 dist/


(12) 利用docker中的nginx映象新建容器,啟動server
docker run -di --name=deploy-vue -p 7000:80 -v /home/workspace/project/hasaki/dist:/usr/share/nginx/html 6678c7c2e56c
// dist目錄對映到/usr/share/html目錄中


(13) 優化流程 建立deploy.sh 檔案
sh deploy.sh

--------------
ploy.sh檔案如下
--------------
# 拉取程式碼
git pull

# install 依賴
# npm install 

# build
npm run build

# 刪除容器
docker rm -f deploy-vue 

# 啟動容器
docker run -d --restart=on-failure:5 \
  -p 7000:80 \
  -v /home/workspace/project/hasaki/dist:/usr/share/nginx/html \
  --name=deploy-vue \
  6678c7c2e56c
  
  

(16) 
因為:當使用nginx反向代理時,因為vue中output的publicPath是根路徑導致伺服器中的資源路徑不一樣
所以:資源載入不到報404

解決方法:在vue.config.js中設定 ( publicPath='./' ) 相對路徑
複製程式碼

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

docker 部署 mysql

(1) docker pull mysql:5.6


(2) cd /home/workspace


(3) mkdir mysql && cd mysql


(4) docker run -id \
-p 3307:3306 \
--name=mysql_c1
-v $PWD/config:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6 \
/bin/bash

// $PWD ---------------------------------------------- 當前目錄的絕對路徑
// $PWD/config:/etc/mysql/conf.d --------------------- 將...../config/my.cnf 對映到 /etc/mysql/conf.d/my.cnf
// $PWD/logs:/logs ----------------------------------- 對映logs目錄
// $PWD/data:/var/lib/mysql -------------------------- 對映data目錄
// -e MYSQL_ROOT_PASSWORD=123456 ---------------------- 初始化root使用者的密碼
// -e 是env的意思,環境變數
// docker run -id -p 3307:3306 --name=mysql_c1 -v $PWD/config:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 /bin/bash
// /bin/bash主要是為了解決容器啟動後馬上關閉的bug
// 注意:第四步執行的目錄是在第三步的目錄中,即 ( /home/workspace/mysql = $PWD )


(5) 進入mqsql容器,並啟動mysql
docker exec -it mysql_c1 /bin/bash
mysql -uroot -p123456
// docker exec -it mysql_c1 /bin/bash ------- 互動式進入mysql_c1容器並執行命令/bin/bash
// mysql -uroot -p123456 -------------------- 使用者名稱root 密碼123456


(6) 當在(5)執行mysql -uroot -p123456時,
1.
報錯:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
原因:沒有啟動mysql
解決辦法:
1. 在mysql的容器中執行 /etc/init.d/mysql start --skip-grant-tables
2. 在執行mysql -uroot -p 回車
3. 回車後讓輸入密碼,此時不輸入任何密碼直接回車

2. 報錯ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決辦法:在mysql的容器中執行 /etc/init.d/mysql start --skip-grant-tables
即:加上--skip-grant-tables


(7) 
show database;
create database db1;
show databases;
use db1;


(8) 用Navicate連線docker中的mysql
報錯:通過Navicat for MySQL遠端連線的時候報錯mysql 1130的解決方法
解決資料: https://www.cnblogs.com/happyyangyanghappy/p/10728699.html
解決方法:
mysql -u root -p  
mysql;use mysql;  
mysql;select 'host' from user where user='root';  
mysql;update user set host = '%' where user ='root';  
mysql;flush privileges;  
mysql;select 'host'   from user where user='root'; 
複製程式碼

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

[部署02] Docker 部署vue專案

centos目錄結構

  • /bin:( binary:二進位制的 ) 存放二進位制可執行檔案,常用的命令一般都在這裡
  • /etc:存放系統管理和 配置檔案
  • /usr:( usr:unix system resources 系統資源 ) 用於存放 系統應用程式
  • /root: 超級使用者(系統管理員)的主目錄(特權階級^o^);
  • /home:存放所有使用者檔案的根目錄,使用者主目錄的基點,如使用者user的主目錄就是/home/user,可以用~user表示
  • /opt: 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡

[部署02] Docker 部署vue專案

資料

入門 dockone.io/article/835…
yum命令 www.runoob.com/linux/linux…
centOS安裝Docker教程 juejin.im/post/5dc4d7…
阮一峰 www.ruanyifeng.com/blog/2018/0…
docker常用命令 www.cnblogs.com/DeepInThoug…
rpm檢視某個包的具體安裝路徑 blog.csdn.net/jsloveyou/a…
資料卷 www.imooc.com/article/263…
docker部署vue www.jianshu.com/p/3771b1552…
centos安裝node的兩種方式 blog.csdn.net/lu_embedded…

相關文章