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阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容