CentOS8上用Docker部署開源項目Tcloud

来源:https://www.cnblogs.com/yuxuan6699/archive/2020/01/20/12218912.html
-Advertisement-
Play Games

一、安裝Docker 1、我是虛擬機裝的Centos7,linux 3.10 內核,docker官方說至少3.8以上,建議3.10以上(ubuntu下要linux內核3.8以上) root賬戶登錄,查看內核版本如下 uname -a 2、把yum包更新到最新 yum update (期間要選擇確認, ...


一、安裝Docker

1、我是虛擬機裝的Centos7,linux 3.10 內核,docker官方說至少3.8以上,建議3.10以上(ubuntu下要linux內核3.8以上)

root賬戶登錄,查看內核版本如下

uname -a

 

2、把yum包更新到最新

yum update

(期間要選擇確認,輸入 y 即可)

 

3、安裝需要的軟體包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

yum install -y yum-utils device-mapper-persistent-data lvm2

 

4、設置yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿裡倉庫)

 

 

5、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

 

 

6、安裝Docker,命令:yum install docker-ce-版本號,我選的是docker-ce-18.03.1.ce,如下

yum install docker-ce-18.03.1.ce

 

(期間要選擇確認,輸入 y 即可)

 

7、啟動Docker,命令:systemctl start docker,然後加入開機啟動,如下:

systemctl start docker #啟動docker

 

systemctl enable docker #設置docker為開機自啟
sudo docker run --rm hello-world  #啟動docker中的hello-word

 

 

 8、如果看到如圖:

則說明安裝doceker成功

二、接下來安裝doceker-compose

1、運行以下命令下載Docker Compose的當前穩定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

 

2、將可執行許可權應用於二進位文件:

sudo chmod +x /usr/local/bin/docker-compose

 

 

3、註意:如果命令docker-compose在安裝後失敗,請檢查您的路徑。您也可以創建指向/usr/bin或路徑中任何其他目錄的符號鏈接。

例如:

 

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

 

 

 

4、檢查docker-compose 是否安裝成功

doceker-compose --version

 

三、安裝與配置Git

1、在Linux上是有yum安裝Git,非常簡單,只需要一行命令:

yum -y install git 

輸入 :

git --version

 

查看Git是否安裝完成以及查看其版本號

 

2、配置git:

git config --global user.name "xxx"

git config --global user.email "[email protected]"

git config --global core.autocrlf false

git config --global gui.encoding utf-8

 

 

3、執行下麵的命令,一直回車,直到結束

ssh-keygen -t rsa -C "[email protected]"

 

4、生成ssh key

cat ~/.ssh/id_rsa.pub 

 

5、登陸GitHub,點擊setting>SSH and GPG keys>New SSH Key 將生成的密鑰複製到Key中即可

 

6、測試是否配置成功

 

ssh -T [email protected] 

 

 

7、出現這樣一段話,即證明配置成功。

Hi RoninLee! You've successfully authenticated, but GitHub does not provide shell access.

 

 

四、後端部署

1、運行以下命令拉起源碼:

git clone https://github.com/bigbaser/TcloudServer.git

 

 

2、進入到TcloudServer\deploy目錄下,使用以下命令,拉取所有(等待一會,拉取時間較長)

docker-compose pull

 

 

3、然後修改local_config.py文件,

# 這裡的賬號密碼是在docker-compose.yml中配置的,改成以下

SQLALCHEMY_DATABASE_URI = 'mysql://root:tc123456@mysql:3306/demo?charset=utf8'

 

 

4、再初始化kong的資料庫(如果報錯,再執行一次,成功的話會顯示Database is up-to-date

$ sudo docker-compose up -d kong_database

// 容器啟動以後,資料庫會本地掛載到 ./volumes/kong_database 裡面

// 但由於許可權問題,初始化資料庫會失敗,所以要先對該文件賦予許可權

$ sudo chmod -R 777 ./volumes/kong_database

$ sudo docker-compose run --rm kong kong migrations bootstrap

 

 

5、然後啟動所有項目

$ sudo docker-compose up -d

 

 

6、查看啟動狀態

$ sudo docker-compose ps

 

 

7、如果所有狀態均為up,則運行正常,否則查看日誌

sudo docker logs <name>查看日誌

 

 

8、打開konga(kong的管理頁面,http://localhost:9001),註冊賬號並登錄,再新建連接,地址為http://kong:8001

 

 

9、成功後,進入SNAPSHOT頁面,點擊IMPORT FROM FILE,選擇我們的kong.json文件,併進入DETAILS中RESTORE,全選導入,可能會出錯,再執行一次即可,此時我們的網關服務已經運行完成,地址為http://localhost:9000 

ps: 資料庫初始化文件是init/init.sql,可以通過sudo docker-compose down -v再刪除volume/mysql掛載目錄之後,sudo docker-compose up -d來重新初始化資料庫

 

五、前端部署

1、安裝node環境

CentOS儲存庫安裝Node.js和npm

可以從標準CentOS存儲庫中安裝Node.js和npm。

通過運行以下命令列出提供nodejs軟體包的模塊:

yum module list nodejs

 

要在CentOS系統上安裝預設的Node.js軟體包,請輸入

sudo yum module install nodejs

 

 

輸入以下命令:

node --version  #檢查node 是否安裝成功

npm --version  #檢查 npm 是否安裝成功

 

2、使用以下命令拉取前端代碼:

git clone  https://github.com/bigbaser/Tcloud.git

 

3、在前端項目的根目錄下執行:npm install 安裝依賴包

 

4、安裝依賴包如報以下錯:

 

解決辦法:

4.1、輸入以下命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

 

4.2、建立軟鏈接:

sudo ln -s {此處為你安裝npm的路徑}.npm-global/bin/cnpm /usr/local/bin/cnpm

 

4.3、輸入:

cnpm --version 檢查是否安裝成功。

 

5、修改config/dev.env.js與index.js文件中的BASE_URL 地址為http://0.0.0.0

 

6、運行前端項目:

npm run dev

 

 

 

7、在非 localhost 功能變數名稱下登錄不成功,可以打開開發者工具,查看 Application 下的 Cookies 是否有 JWT_TOKEN_TCLOUD_DEV

如果沒有,找到前端項目 Tcloud/src/store/modules/login.js,修改第57行,把

domain: process.env.NODE_ENV === 'development' ? 'localhost' : COOKIE_DOMAIN

修改為:
domain: COOKIE_DOMAIN

 

然後修改 config 下的 dev.env.js,把 COOKIE_DOMAIN 改成前端當前訪問功能變數名稱即可。

 

六、報錯總結:

一、docker pull 鏡像時報錯:

1、

ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on such host

 

2、

ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on xxx.xxx.xxx.xxx:xxxx: lame referral

 

3、

Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25: dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.168.65.1:53: i/o timeout

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

 

 

二、分析問題:

問題1、2這個是因為DNS功能變數名稱沒有解析的原因。

問題3 網路連接超時,這情況涉及到很多因素。

 

三、解決辦法:

問題:1、2:

vi  /etc/resolv.conf  增加一行DNS地址:例如:nameserver  114.114.114.114 (此方法伺服器重啟之後會失效。參考方法2:vi /etc/sysconfig/network-scripts/ifcfg-ens33 打開網卡配置文件,在配置文件中添加:DNS1=”8.8.8.8”,DNS2=”114.114.114.114”)

保存之後,繼續執行拉取鏡像的命令,即可!

問題:3:

3.1 通過dig @114.114.114.114 registry-1.docker.io找到可用IP

3.2 嘗試修改/etc/hosts強制docker.io相關的功能變數名稱解析到其它可用IP

3.3 保存之後重試即可: docker search sameersbn

 

 

 

 

附一些常用Docker命令,更多命令詳解,請訪問:http://www.docker.org.cn/dockerppt/106.html:

 

 -----------------     docker ps 查看當前正在運行的容器

 

 -----------------    docker ps -a 查看所有容器的狀態

 

 -----------------    docker start/stop id/name 啟動/停止某個容器

 

 -----------------    docker attach id 進入某個容器(使用exit退出後容器也跟著停止運行)

 

 -----------------    docker exec -ti id 啟動一個偽終端以互動式的方式進入某個容器(使用exit退出後容器不停止運行)

 

 -----------------    docker images 查看本地鏡像

 -----------------    docker rm id/name 刪除某個容器

-----------------     docker rmi id/name 刪除某個鏡像

 

 -----------------    docker run --name test -ti ubuntu /bin/bash  複製ubuntu容器並且重命名為test且運行,然後以偽終端互動式方式進入容器,運行bash

 

-----------------     docker build -t soar/centos:7.1 .  通過當前目錄下的Dockerfile創建一個名為soar/centos:7.1的鏡像

 

 -----------------    docker run -d -p 2222:22 --name test soar/centos:7.1  以鏡像soar/centos:7.1創建名為test的容器,並以後臺模式運行,並做埠映射到宿主機2222埠,P參數重啟容器宿主機埠會發生改變

 

 

參考:https://github.com/bigbaser/TcloudServer/blob/master/deploy/docs/Docker%E9%83%A8%E7%BD%B2.md


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目一 計算十進位數字在二進位表示 1 的個數 舉個例子: 十進位數字為 1 時,它的二進位表示是 001,二進位表示 1 的個數為 1; 十進位數字為 2 時,它的二進位表示是 010,二進位表示 1 的個數為 1; 十進位數字為 3 時,它的二進位表示是 011,二進位表示 1 的個數為 2; ...
  • 實現的關於線上考試的功能有:用戶前臺:用戶註冊登錄、查看考試信息、進行考試、查看考試成績、查看歷史考試記錄、回顧已考試卷、修改密碼、修改個人信息等,後臺管理功能(腳手架功能不在這裡列出),科目專業管理、考生管理、試題管理、考試管理、試卷管理、答題詳情管理、考試成績圖表統計等,其中試題可以支持批量ex ...
  • 基於JDK1.7 HashMap源碼分析 概述 HashMap是存放鍵值對的集合,數據結構如下: 1. table被稱為桶,大小(capacity)始終為2的冪,當發生擴容時,map容量擴大為兩倍 2. HashMap採用拉鏈法解決Hash衝突,發生衝突時,新元素採用頭插法插入到對應桶的鏈表中 Ha ...
  • 實現的關於線上考試的功能有:用戶前臺:用戶註冊登錄、查看考試信息、進行考試、查看考試成績、查看歷史考試記錄、回顧已考試卷、修改密碼、修改個人信息等,後臺管理功能(腳手架功能不在這裡列出),科目專業管理、考生管理、試題管理、考試管理、試卷管理、答題詳情管理、考試成績圖表統計等,其中試題可以支持批量ex ...
  • 1. 關聯 1.1 模型類關係 關係型資料庫的關係包括三種類型: ForeignKey:一對多,將欄位定義在多的一端中。 ManyToManyField:多對多,將欄位定義在任意一端中。 OneToOneField:一對一,將欄位定義在任意一端中。 1.1.1 一對多關係 #定義圖書模型類BookI ...
  • uwsgi -i 你的目錄/uwsgi.ini & 後臺開啟uwsgipkill -f uwsgi.ini 重啟uwsgi ...
  • 上面這張表格實際上是一個n行 6列的二維數組。 多維數組的語法: 註意:每一個中括弧表示一個維度。 習題 設計一個程式,可以保存n年的各科成績,可以對這些年的成績進行查詢。 測試用例:保存3年的成績,查詢第三年的生物成績。 ...
  • 很多人都礙於Python培訓班的高昂費用和有限的空餘時間都選擇自學Python,但是沒有老師幫助,顯得有些迷茫,不知應該從何處學起,也不知識看書學習還是應該看視頻學習。本就來談談這個話題。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...