導航
[深入01] 執(zhí)行上下文
[深入02] 原型鏈
[深入03] 繼承
[深入04] 事件循環(huán)
[深入05] 柯里化 偏函數(shù) 函數(shù)記憶
[深入06] 隱式轉換 和 運算符
[深入07] 瀏覽器緩存機制(http緩存機制)
[深入08] 前端安全
[深入09] 深淺拷貝
[深入10] Debounce Throttle
[深入11] 前端路由
[深入12] 前端模塊化
[深入13] 觀察者模式 發(fā)布訂閱模式 雙向數(shù)據(jù)綁定
[深入14] canvas
[深入15] webSocket
[深入16] webpack
[深入17] http 和 https
[深入18] CSS-interview
[深入19] 手寫Promise
[深入20] 手寫函數(shù)
[部署01] Nginx
[部署02] Docker 部署vue項目
[部署03] gitlab-CI
[源碼-webpack01-前置知識] AST抽象語法樹
[源碼-webpack02-前置知識] Tapable
[源碼-webpack03] 手寫webpack - compiler簡單編譯流程
[源碼] Redux React-Redux01
[源碼] axios
[源碼] vuex
[源碼-vue01] data響應式 和 初始化渲染
[源碼-vue02] computed 響應式 - 初始化,訪問吼鳞,更新過程
[源碼-vue03] watch 偵聽屬性 - 初始化和更新
[源碼-vue04] Vue.set 和 vm.$set
[源碼-vue05] Vue.extend
[源碼-vue06] Vue.nextTick 和 vm.$nextTick
前置知識
一些單詞
prerequisites:先決條件
( meet the prerequisites 滿足前提條件 )
Community:社區(qū)的
associated:關聯(lián)的
( along with associated dependencies 以及相關的依賴關系 )
exactly:確切的
( "docker build" requires exactly 1 argument 確切的只需要1個參數(shù) )
denied:拒絕
//2021-06-15 更新
daemon: 守護進程 // docker默認情況下是在守護進程中工作
yum命令
yum [options] [command] [package ...]
- 1.列出所有可更新的軟件清單命令:yum check-update
- 2.更新所有軟件命令:yum update
- <font color=red>3.僅安裝指定的軟件命令:yum install <package_name></font>
- <font color=red>yum install -y git</font>
- <font color=red>-y 的作用是如果安裝過程中有詢問,都會自動的選擇yes</font>
- 4.僅更新指定的軟件命令:yum update <package_name>
- 5.列出所有可安裝的軟件清單命令:yum list
- 6.刪除軟件包命令:yum remove <package_name>
- 7.查找軟件包 命令:yum search <keyword>
- 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 ) 只能安裝已經(jīng)下載到本地機器上的 ( rpm包 )
- <font color=red>( yum ) 能 ( 在線 - 線上 ) 下載并安裝rpm包检诗,能更新系統(tǒng)匈仗,且還能自動處理包與包之間的依賴問題</font>,這個是 rpm 工具所不具備的逢慌。
(2) yum 安裝的包的路徑
- 注意查看時悠轩,使用的是 rpm 命令
rpm -qa 查詢所有安裝的rpm包,可以配合grep命令
rpm -ql 列出某個具體包的所有- 文件路徑
- <font color=blue>rpm的默認安裝路徑</font>
/etc 一些設置文件放置的目錄如
/etc/crontab/usr/bin 一些可執(zhí)行文件
/usr/lib /usr/lib64 一些程序使用的動態(tài)函數(shù)庫
/usr/share/doc 一些基本的軟件使用手冊與幫助文檔
/usr/share/man 一些man page文件
- <font color=blue> 如何查看某個用 yum 安裝的包的具體路徑涕癣??前标?坠韩?</font>
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 ------------------ 列出這個包的所有文件的路徑
Docker
Docker三個基本概念 - Container Image Repository
- Container 容器
- Image 鏡像
- Repository 倉庫
- ( <font color=red>鏡像</font> ) 是Docker運行 ( <font color=red>容器</font> ) 的前提, ( <font color=red>倉庫</font> ) 是存放鏡像的場所炼列,( 可見鏡像 ) 更是 Docker 的核心
docker安裝
- 官網(wǎng)安裝教程 - centOS - Community版 - (社區(qū)版免費)
- 本文通過購買的騰訊云服務器 centOS 安裝
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) 設置穩(wěn)定的存儲庫 - 倉庫
- 官方倉庫
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 阿里云倉庫:如果安裝太慢,用阿里云鏡像
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/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
docker常用命令
docker相關
docker相關
啟動docker --------------------- systemctl start docker ( ctl是control的縮寫 )
停止docker --------------------- systemctl stop docker
重啟docker --------------------- systemctl restart docker
開機啟動docker ----------------- systemctl enable docker ( <蠹狻G馔铩!;纭Q嫱!已亥! )
查看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 列出收藏數(shù)字不小于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 強制刪除某個鏡像虑椎,必須鏡像已經(jīng)創(chuàng)建的容器正在運行時使用
-------------------------------- 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
列出最近創(chuàng)建的三個容器 -------------------------- docker ps -n 3
列出已經(jīng)停止的容器 ------------------------------ 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) 刪除全部容器
( 注意區(qū)分刪除鏡像 ------------------------------ docker rmi -f $(docker images -qa) 刪除全部鏡像
( 已經(jīng)在運行的容器泥技,或者鏡像創(chuàng)建的容器正在運行想刪除浆兰,用 -f 強制刪除 )
container容器相關 - 進階命令
以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 鏡像ID
// 不會進入容器,并且會返回容器ID
進入容器珊豹,并執(zhí)行命令 ---------------------- docker exec -it 容器ID | 容器名稱 執(zhí)行命令
// 進入容器 ------------------------------- docker attach 容器ID | 容器名稱
查看容器日志 ------------------------------ docker logs 容器ID | 容器名稱
查看容器進程 ------------------------------ docker top 容器ID | 容器名稱
宿主機拷貝文件到容器 ---------------------- docker cp 需要拷貝的文件或目錄 容器id|名稱 :容器目錄
容器文件拷貝到宿主機 ---------------------- docker cp 容器id|名稱:文件目錄|文件 宿主機目錄
例下圖:從宿主機中拷貝b.png到容器mycentos的tem文件中
例下圖:容器拷貝文件夾到宿主機
例下圖:以守護方式啟動容器 ------------------------ docker run -di --name 容器名稱 鏡像ID
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 新鏡像名稱
- 提交后,就可以以這個鏡像創(chuàng)建容器了
docker commit -a='作者' -m='備注' 運行時的容器ID 新鏡像名稱
docker push 推送鏡像到服務器
- 第一步: 注冊 https://hub.docker.com/忽妒,獲取docker id 和 密碼
- 第二步:命令行登陸 ( <font color=red>docker login</font> )
- 第三步:打標簽 ( <font color=red>docker tag 鏡像名</font>)
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
- 第三步:<font color=red>docker push 鏡像名稱 : TAG版本號</font>
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
Dockerfile
- Dockerfile語法
語法 | 說明 |
---|---|
FROM | 引用基礎鏡像 - from |
MAINTAINER | 維護者 - maintainer name<郵箱或者電話> |
LABEL | 對鏡像的描述,類似于注釋 - label name="xxxx" \ date="xxxx" |
ENV |
設置容器內的環(huán)境變量和常量 在其他地方通過 ( $ ) 來引用該環(huán)境變量的值 |
ARG |
和ENV的作用相似吃溅,都是設置 - 環(huán)境變量 不同點:ARG 所設置的構建環(huán)境的環(huán)境變量溶诞,在將來容器運行時是不會存在這些環(huán)境變量的。但是不要因此就使用 ARG 保存密碼之類的信息决侈,因為 docker history 還是可以看到所有值的螺垢。 Dockerfile 中的 ARG 指令是定義參數(shù)名稱,以及定義其默認值赖歌。 該默認值可以在構建命令 docker build 中用 --build-arg <參數(shù)名>=<值> 來覆蓋 ARG 指令有生效范圍枉圃,如果在 FROM 指令之前指定妻熊,那么只能用于 FROM 指令中 |
WORKDIR |
當前的工作目錄贞岭,即是進入容器后系吩,默認所在的當前目錄 |
RUN |
在新建鏡像時執(zhí)行的命令 - run 比如 RUN yum -y install Vim 表示用yum來安裝 Vim 包 |
EXPOSE |
暴露端口 - expose |
CMD |
設置容器啟動后默認執(zhí)行的命令和參數(shù) 比如 CMD /bin/bash - 如果docker run的時候指定了其他CMD命令臣淤,Dockerfile中的CMD命令被忽略婉刀;如果定義了多個CMD巢钓,只有最后一個會執(zhí)行 - 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
// CMD ["nginx", "-g", "daemon off;"]
// 注意:這里 nginx -g daemon off 表示不是使用守護進程窟蓝,即容器啟動nginx后不會立即退出
// 因為:容器啟動nginx后會立刻退出栖茉,所以需要使用nginx的前臺運行模式篮绿,關掉daemon off表示關閉守護進程模式
// 命令:nginx -g => 1.-g表示指定配置指令 2.daemon off關閉守護進程
使用 Dockerfile 構建自定義 centos鏡像 -- docker build
- 編寫號 Dockerfile 文件
- 執(zhí)行命令
docker build -f Dockerfile的路徑 -t 鏡像的名字:標簽 .
docker build -f 路徑/Dockerfile文件名 -t Repository/name:tag.
- 注意最后面的
.
- 構建鏡像成功后,就可以新建容器了
docker run -it --name 容器名稱 -p 8888:7000 鏡像ID
- 驗證
因為添加了一些包吕漂,所以使用 ifcofnig 或者 vim 看安裝好了沒
2. docker build
在根目錄下執(zhí)行
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
RUN 和 CMD 和 ENTRYPOINT 三者的區(qū)別
- <font color=blue>RUN</font> 執(zhí)行命令并創(chuàng)建新的 ( <font color=red>鏡像層</font> ),即在 ( <font color=blue>docker build</font> ) 時執(zhí)行的命令痰娱,RUN 經(jīng)常用于安裝軟件包弃榨。
- <font color=blue>CMD</font> 設置 ( <font color=red>容器</font> ) 啟動后默認執(zhí)行的命令及其參數(shù),即在 ( <font color=blue>docker run</font> ) 時執(zhí)行的命令
- <font color=red>但 CMD 能夠被 docker run 后面跟的命令行參數(shù)替換</font>
- <font color=red>多條CMD命令梨睁,則只會執(zhí)行最后一條</font>
- ENTRYPOINT 配置 ( <font color=red>容器</font> ) 啟動時運行的命令鲸睛。
- 不會被 docker run 的命令行參數(shù)指定的指令所覆蓋
- <font color=red> 當CMD和ENTRYPOINT同時存在時,CMD會被當做參數(shù)傳遞給ENTRYPOINT</font>
RUN CMD ENTRYPONT區(qū)別總結
(1) ( RUN ) 是構建鏡像時執(zhí)行的命令 ( docker build )坡贺,而 ( CMD和ENTRYPOINT ) 是容器啟動時執(zhí)行的命令 ( docker run )
(2) 三者都都支持 exec 和 shell 方式
(3) 常用方式:( 單獨的CMD ) 或者 ( 先ENTRYPOINT后面跟一個CMD )
(4) 多個CMD只有最后一個CMD生效
(5) 命令行帶參數(shù)官辈,CMD將失效而ENTRYPOINT不受影響
案例1:
CMD ["catalina.sh", "run"]
- "catalina.sh":可執(zhí)行文件
- "run":參數(shù)
案例2:
ENTRYPOINT ["docker-entrypoint.sh"] // --- ENTRYPOINT 和 CMD 的組合
EXPOSE 6379
CMD ["redis-server"] // ------------------ 因為上面有ENTRYPOINT,所以CMD中的值會作為ENTRYPOINT的參數(shù)
數(shù)據(jù)卷 volume
為什么需要數(shù)據(jù)卷
- 不能在宿主機上很方便的訪問容器中的文件(數(shù)據(jù))
- 外部機器 和 (宿主機中的容器) 不能交換文件
- 無法在多個容器中共享數(shù)據(jù)
- 刪除容器遍坟,容器中的數(shù)據(jù)將消失
- <font color=red>為了解決以上問題拳亿,docker中引入了 數(shù)據(jù)卷 (data volume) 機制</font>
什么是數(shù)據(jù)卷
- 數(shù)據(jù)卷是存在于一個或多個容器中的特定文件或文件夾,這個文件或文件夾以獨立于 docker 文件系統(tǒng)的形式存在于宿主機中
- <font color=red>在宿主機中的共享的那個文件或者文件夾叫做數(shù)據(jù)卷</font>
- <font color=red>數(shù)據(jù)卷的特點:其生存周期獨立于容器的生存周期</font>
- 數(shù)據(jù)卷的掛載點愿伴,默認是本機 /var/lib/docker/volumes 下的一個目錄
如何用命令實現(xiàn)數(shù)據(jù)卷 - 配置數(shù)據(jù)卷volume
-
docker run -it --name xxxx -p 9000:8000 -v /root/data:/root/data_container 鏡像ID
- 表示通過鏡像ID新建容器肺魁,并創(chuàng)建數(shù)據(jù)卷,并且做端口映射
- 注意點:
- -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 ) 創(chuàng)建容器
(2) 鏡像取名:c2
(3) 數(shù)據(jù)卷 ( 宿主目錄/root/data ) 對應 ( 容器目錄/root/data_container )
(4) 端口映射 3000:4000
(5) -p 是port的意思
volume 相關命令
命令 | 說明 |
---|---|
docker volume create | 創(chuàng)建數(shù)據(jù)卷 |
docker volume inspect | 顯示數(shù)據(jù)卷的詳細信息 |
docker volume ls | 列出所有的數(shù)據(jù)卷 |
docker volume prune | 刪除所有未使用的 volumes鹅经,并且有 -f 選項 |
docker volume rm | 刪除一個或多個未使用的 volumes寂呛,并且有 -f 選項 |
數(shù)據(jù)卷容器
- 數(shù)據(jù)卷容器其實就是一個普通的容器,只是用來專門存儲數(shù)據(jù)的容器
- 主要分為兩步
- 第一步:創(chuàng)建啟動數(shù)據(jù)卷容器 c3
-v /volume
- 第二步:創(chuàng)建啟動需要共享數(shù)據(jù)的業(yè)務容器 c1 c2
--volumes-from c3
- 第一步:創(chuàng)建啟動數(shù)據(jù)卷容器 c3
- 詳細過程
(1) 創(chuàng)建數(shù)據(jù)卷容器 c3
docker run -it --name=c3 -v /volume -p 1000:2000 5e35e350aded /bin/bash
(2) 創(chuàng)建需要共享數(shù)據(jù)可以做映射的普通容器 c1
docker run -it --name=c1 --volumes-from c3 -p 3000:4000 5e35e350aded /bin/bash
docker 鏡像加速器
- 如下圖
- 如何驗證已經(jīng)修改源成功瘾晃?
- 執(zhí)行該命令
cat /etc/docker/daemon.json
驗證registry-mirrors的值
- 執(zhí)行該命令
Docker 部署 Vue項目 到服務器
(1) 一個ceontos系統(tǒng)的服務器
(2) 安裝docker
(3) docker pull nginx:tag ------------------------------------------------ 從遠程repository倉庫拉取nginx鏡像
// 查看所有鏡像 docker images -a
// 搜索某個鏡像 docker search -s 40 nginx
// -s 40 表示收藏數(shù)不小于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中創(chuàng)建 default.conf 文件贷痪,里面是nginx的配置
在 html.d中創(chuàng)建 index-test.html 文件,隨便寫點東西
+++++ default.conf 內容如下 +++++
server {
listen 80;
server_name localhost;
# 原來的配置蹦误,匹配根路徑
#location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
#}
# 更該配置劫拢,匹配/路徑,修改index.html的名字强胰,用于區(qū)分該配置文件替換了容器中的配置文件
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) 新建并執(zhí)行容器
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 ----------------- 根據(jù)鏡像創(chuàng)建執(zhí)行容器
// 注意這里騰訊云可以訪問不到舱沧,因為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>
執(zhí)行命令
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 - 用于打包涡真,本地啟動服務,執(zhí)行 script 命令等
[1]
yum install epel-release
yum install nodejs
// node -v 查看是否安裝成功肾筐,版本
// npm -v 查看npm版本哆料,注意node自帶npm
// 注意:這樣下載的node版本過低,需要升級B痤怼6唷!;I5湔蟆!D魇拧W嘲 !3潘狻4跆洹!Wぁ@暄邸!T〉巍M孛取!I浴K局尽L鹱稀!
// 升級方法:https://juejin.im/post/6844903733239742477
// 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) 優(yōu)化流程 創(chuàng)建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='./' ) 相對路徑
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的意思,環(huán)境變量
// 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
// 注意:第四步執(zhí)行的目錄是在第三步的目錄中瘸恼,即 ( /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容器并執(zhí)行命令/bin/bash
// mysql -uroot -p123456 -------------------- 用戶名root 密碼123456
(6) 當在(5)執(zhí)行mysql -uroot -p123456時,
1.
報錯:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
原因:沒有啟動mysql
解決辦法:
1. 在mysql的容器中執(zhí)行 /etc/init.d/mysql start --skip-grant-tables
2. 在執(zhí)行mysql -uroot -p 回車
3. 回車后讓輸入密碼东帅,此時不輸入任何密碼直接回車
2. 報錯ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決辦法:在mysql的容器中執(zhí)行 /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';
centos目錄結構
- /bin:( <font color=red>binary:二進制的</font> ) 存放二進制可執(zhí)行文件压固,<font color=red>常用的命令一般都在這里</font>
- /etc:存放系統(tǒng)管理和 <font color=red>配置文件</font>
- /usr:( usr:unix system resources 系統(tǒng)資源 ) 用于存放 <font color=red>系統(tǒng)應用程序</font>
- /root: 超級用戶(系統(tǒng)管理員)的主目錄(特權階級o);
- /home:存放所有用戶文件的根目錄靠闭,用戶主目錄的基點帐我,如用戶user的主目錄就是/home/user,可以用~user表示
- /opt: 額外安裝的可選應用程序包所放置的位置愧膀。一般情況下拦键,我們可以把tomcat等都安裝到這里
資料
入門 http://dockone.io/article/8350
yum命令 https://www.runoob.com/linux/linux-yum.html
centOS安裝Docker教程 https://juejin.im/post/6844903990002450439
阮一峰 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
docker常用命令 https://www.cnblogs.com/DeepInThought/p/10896790.html
rpm查看某個包的具體安裝路徑 https://blog.csdn.net/jsloveyou/article/details/94601163
數(shù)據(jù)卷 https://www.imooc.com/article/26316
docker部署vue http://www.reibang.com/p/3771b155283b
centos安裝node的兩種方式 https://blog.csdn.net/lu_embedded/article/details/79138650