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

相关文章
相关标签/搜索