CentOS8上用Docker部署開源項目Tcloud

一、安裝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"xxxxx@xx.com"

git config --global core.autocrlffalse

git config --global gui.encoding utf-8

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

ssh-keygen -t rsa -C"xxxxx@xxx.com"

4、生成ssh key

cat ~/.ssh/id_rsa.pub?

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

6、測試是否配置成功

ssh -T git@github.com


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 -R777./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軟件包的模塊:

yummodulelist nodejs

要在CentOS系統上安裝默認的Node.js軟件包,請輸入:

sudo yummoduleinstall 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 on192.168.65.1:53: read udp192.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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容