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..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.autocrlf false git config --global gui.encoding utf-
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 -R ./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-.docker.io/v2/: dial tcp: lookup registry-.docker.io on such host
2、
ERROR: Get https://registry-.docker.io/v2/: dial tcp: lookup registry-.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=: dial tcp: lookup index.docker.io on 192.168.65.1:: read udp 192.168.65.2:->192.168.65.1:: i/o timeout Error response from daemon: Get https://registry-.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
CentOS8上用Docker部署开源项目Tcloud的更多相关文章
- 云服务器上利用Docker部署Django项目
转载别人的,请看下面链接 云服务器上利用Docker部署Django项目
- Centos8.3、docker部署springboot项目实战记录
引言 目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子.只有几台服务器的应用运维使用传统的tomc ...
- [转]GitHub上优秀的Go开源项目
转载于GitHub上优秀的Go开源项目 正文 近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用.技巧 ...
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
- docker初体验:Docker部署SpringCloud项目eureka-server
Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version= ...
- 笔记14:Docker 部署Python项目
Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...
- Docker 部署 vue 项目
Docker 部署 vue 项目 Docker 作为轻量级虚拟化技术,拥有持续集成.版本控制.可移植性.隔离性和安全性等优势.本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思 ...
- GitHub上不错的Android开源项目(二)
收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) 系列文章如下: GitHub上不错的Android开源项目(一):h ...
- docker 部署django项目(nginx + uwsgi +mysql)
最近在学习用docker部署Django项目,经过百折不挠的鼓捣,终于将项目部署成功,爬过好多坑,也发现很多技能需要提高.特此写下随笔与小伙伴们分享,希望能对大家有所启发. docker的理论我就不赘 ...
随机推荐
- 本机无oracle,远程连接
描述 本机无oracle,通过PLSQL Developer程序,连接虚拟机中的oracle11gR2 1 下载instant-client 需要和服务端版本对应 下载相应的instant-clien ...
- PyTorch自动微分基本原理
序言:在训练一个神经网络时,梯度的计算是一个关键的步骤,它为神经网络的优化提供了关键数据.但是在面临复杂神经网络的时候导数的计算就成为一个难题,要求人们解出复杂.高维的方程是不现实的.这就是自动微分出 ...
- Java Integer Addition Subtration Overflow 整数加减溢出
leetCode有道题Reverse Integer,因为int的最大值为2的31次方减一,最小值为-2的31次方. 我一开始的代码将res递归加放在try中,以为溢出会有异常,然而并没有. 因为出传 ...
- HDU 4952 Number Transformation 多校8 机智数学
哎.这个题想了好久,状态不对啊...一个大家都出的题..当时想到肯定是可以有什么规律来暴力,不用算到10的10次方 对于某个k,x.从1到k循环,每次求一个新的x,这个x要大于等于原x,并且要是i的倍 ...
- opencv.js双边滤波 磨皮处理
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...
- css设置兄弟节点的样式(相邻的前一个节点)
产品需求:想在鼠标移动到“移除”的时候,“1.产品匹配测试”添加下划线和更改字体颜色 需求分析:从需求可以看出使用 :hover 就可以解决的问题,但是在实践中发现兄弟选择器(+)不好使,(+)只能是 ...
- c++ opencv 入门
//类型定义 CvPoint point(2, 3); CvPoint2D32f point1(2, 3); CvPoint3D32f point2(2, 3); CvSize size(2, 3); ...
- python奇淫技巧之 抽屉 自动点赞
前言 嘿,各位小伙伴晚上好呀,今天又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞 原计划打算,是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录,但是我又被啪啪打脸了 ...
- Android自定义View——贝塞尔曲线实现水波纹效果
我们使用到的是Path类的quadTo(x1, y1, x2, y2)方法,属于二阶贝塞尔曲线,使用一张图来展示二阶贝塞尔曲线,这里的(x1,y1)是控制点,(x2,y2)是终止点,起始点默认是Pat ...
- (简单模拟)P1003 铺地毯
题解: 从最后一个输入的数据开始排查,如果说你找到了这个点上面有地毯,那么就直接输出这个值,如果没找到就按照题干的意思输出-1. #include<iostream>#include< ...