CentOS8上用Docker部署開源項目Tcloud

1、安裝Docker

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

root帳戶登陸,查看內核版本以下前端

uname -a

 

二、把yum包更新到最新node

yum update

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

 

三、安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的linux

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

 

四、設置yum源git

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

 

 

五、能夠查看全部倉庫中全部docker版本,並選擇特定版本安裝github

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

 

 

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

yum install docker-ce-18.03.1.ce

 

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

 

七、啓動Docker,命令:systemctl start docker,而後加入開機啓動,以下:shell

systemctl start docker #啓動docker

 

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

 

 

 八、若是看到如圖:

則說明安裝doceker成功

2、接下來安裝doceker-compose

一、運行如下命令下載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

 

 

二、將可執行權限應用於二進制文件:

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

 

 

三、注意:若是命令docker-compose在安裝後失敗,請檢查您的路徑。您也能夠建立指向/usr/bin或路徑中任何其餘目錄的符號連接。

例如:

 

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

 

 

 

 

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

doceker-compose --version

 

3、安裝與配置Git

一、在Linux上是有yum安裝Git,很是簡單,只須要一行命令:

yum -y install git 

輸入 :

git --version

 

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

 

二、配置git:

git config --global user.name "xxx"

git config --global user.email "xxxxx@xx.com"

git config --global core.autocrlf false

git config --global gui.encoding utf-8

 

 

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

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

 

四、生成ssh key

cat ~/.ssh/id_rsa.pub 

 

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

 

六、測試是否配置成功

 

ssh -T git@github.com 

 

 

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

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

 

 

4、後端部署

一、運行如下命令拉起源碼:

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

 

 

二、進入到TcloudServer\deploy目錄下,使用如下命令,拉取全部(等待一會,拉取時間較長)

docker-compose pull

 

 

三、而後修改local_config.py文件,

# 這裏的帳號密碼是在docker-compose.yml中配置的,改爲如下

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

 

 

四、再初始化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

 

 

五、而後啓動全部項目

$ sudo docker-compose up -d

 

 

六、查看啓動狀態

$ sudo docker-compose ps

 

 

七、若是全部狀態均爲up,則運行正常,不然查看日誌

sudo docker logs <name>查看日誌

 

 

八、打開konga(kong的管理頁面,http://localhost:9001),註冊帳號並登陸,再新建鏈接,地址爲http://kong:8001

 

 

九、成功後,進入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來從新初始化數據庫

 

5、前端部署

一、安裝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 是否安裝成功

 

二、使用如下命令拉取前端代碼:

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

 

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

 

四、安裝依賴包如報如下錯:

 

解決辦法:

4.一、輸入如下命令:

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

 

4.二、創建軟連接:

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

 

4.三、輸入:

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

 

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

 

六、運行前端項目:

npm run dev

 

 

 

七、在非 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 改爲前端當前訪問域名便可。

 

6、報錯總結:

1、docker pull 鏡像時報錯:

一、

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

 

二、

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

 

三、

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)

 

 

2、分析問題:

問題一、2這個是由於DNS域名沒有解析的緣由。

問題3 網絡鏈接超時,這狀況涉及到不少因素。

 

3、解決辦法:

問題:一、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

相關文章
相關標籤/搜索