Tinywebserver项目运行(docker部署mysql)

.

  • 运行项目
  • 运行时遇到的一些其他问题
    • 重启mysql容器时发现端口被占用

前言
Tinywebserver是github上一个十分优秀的开源项目,帮助初学者学习如何搭建一个服务器.

本文讲述如何在使用docker部署mysql容器的情况下跟该项目进行连接并将项目运行起来,而不是直接使用普通的mysql与该项目连接

主流的运行方式
运行Tinywebserver服务器

运行项目

下面讲述如何把mysql容器和项目进行连接,前提是你需要有一个正在运行的mysql容器.

1.下载项目的源代码

git clone https://github.com/qinguoyi/TinyWebServer.git

2.使用文本编辑器或者Clion打开项目,找到main.cpp

Tinywebserver项目运行(docker部署mysql)_第1张图片

在这个位置,写入你docker中mysql容器的用户名,密码,还有数据库的名字,这里数据库的名字随意.

3.进入mysql容器之中创建一个跟你上面名字一样的数据库(前提是保证你的mysql容器正在运行,可以参考之前的文章)

docker exec -it mysql bash
mysql -u root -p

创建一个数据库

	create database yourdb;
	USE yourdb;
    CREATE TABLE user(
        username char(50) NULL,
        passwd char(50) NULL
    )ENGINE=InnoDB;
    INSERT INTO user(username, passwd) VALUES('name', 'passwd');

这样才能跟项目中登陆界面的用户名-密码相匹配.
运行好项目之后,用户的登录名-密码就会存在这个表之中

4.将mysql的容器的ip地址和端口绑定到项目上

在项目中的sql_connection.cpp文件中,定义了数据库的属性IP地址,端口,数据库名,密码等.

Tinywebserver项目运行(docker部署mysql)_第2张图片
然后在项目中的Webserver.cpp中,定义了初始化数据库连接池的函数
在这里插入图片描述
其中url默认是 localhost

如果你是直接下载的mysql,而非docker实例化的mysql容器的话,这里的localhost是不需要更改的.
但是如果是docker实例化的mysql容器,我们需要把localhost替换成mysql容器的IP地址

我们可以用如下方式查看容器的IP地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名称或容器ID>

之后就会在控制台上显示一行ip地址,替换localhost即可

接下来我们还要检查一下端口,原项目默认的端口是3306,如果你的mysql容器所占用的端口不是3306的话,你需要也把这里的3306替换成的mysql容器的端口

使用命令

docker ps

即可看到mysql容器对应的端口了
绑定好mysql容器的端口和ip地址之后,接下来的操作就都一样了

5.编译Tinywebserver服务器项目

cd Tinywebserver
sh ./build.sh

编译时遇到的错误:fatal error: mysql.h: No such file or directory
解决方法:安装链接库

apt-get install libmysqlclient-dev
./server

此时命令是不会退出的,会一直占用控制台.
如果命令直接退出,就是运行失败,此时可以查看项目的日志查看报错信息;在项目中会生成一个serverlog文件
在这里插入图片描述
如果该文件中有这样的提示,说明数据库没连接上
你需要检查你的数据库名,密码,IP地址,端口,表结构等信息确保数据库没有问题.

接着在浏览器中输入 ip地址:9006即可进入项目

查看虚拟机的ip地址:

ip addr

Tinywebserver项目运行(docker部署mysql)_第3张图片
端口9006是项目默认的端口
它的位置在Config.cpp文件中,可以自行修改
Tinywebserver项目运行(docker部署mysql)_第4张图片
接下来就可以直接在浏览器中输入 ip:9006运行项目,运行结果如图:
Tinywebserver项目运行(docker部署mysql)_第5张图片
出了这个图代表运行成功了


运行时遇到的一些其他问题

重启mysql容器时发现端口被占用

当我使用命令

docker restart mysql

时,系统提示我这个端口正在使用,重启失败,但是我通过docker ps
查看所有正在运行的容器时,并没有mysql,使用 docker stop mysql也无济于事.

如下是解决方法:

sudo lsof -i :端口号

这样就可以找到占用这个端口号的进程,接下来使用指令

sudo kill 进程号

就可以杀死这个进程,正常使用该端口了

你可能感兴趣的:(docker,mysql,容器)