Docker容器内启动 TinyWebServer 项目

看到这个项目,想学学 https://github.com/qinguoyi/TinyWebServer(旧版项目的readme:https://github.com/qinguoyi/TinyWebServer/tree/raw_version

但是配环境搞了一天,才启动成功,所以记录一下


本人只有windows笔记本,不想用笨重的vmware来启动,那就用个docker吧

准备一个装好了mysql-server的docker容器

个人用的镜像,包含了比较多的东西,想的是减少开容器后的apt install过程

用nvidia/cuda完全是没必要的,这个项目又用不到cuda,也可以用其他的容器

之所以用dockerfile给镜像装好mysql-server,是因为我在实验的时候,在容器内执行apt-get install mysql-server 会报错说无法创建符号链接的问题,而用dockerfile提前把它装进镜像就不会有这个报错……

把以下代码(可以删掉一些,编译会快一点,否则apt-get install 会耗大概二十分钟吧)写入一个空文件夹的一个新建文件Dockerfile中

FROM nvidia/cuda:12.4.1-devel-ubuntu22.04
RUN apt-get update && apt-get install -y \
    mysql-client \
    mysql-server \
    git \
    sudo\
    cmake \
    vim \
    libmysqlclient-dev \
    libsqlite3-dev \
    libpq-dev\
    libssl-dev\
    qtbase5-dev\
    net-tools\
    rpm

然后执行 docker build -t my-cuda-ubuntu:v0 .

启动容器

docker run --name mycuda -it --gpus=all -p 127.0.0.1:32123:12321 my-cuda-ubuntu:v0

把容器的12321端口,绑定的宿主机的32123端口。因此项目的server的端口就应该改为12321端口

进入docker容器,可以用vscode的docker扩展,右键附加到vscode

把项目文件夹复制到容器内

GitHub - qinguoyi/TinyWebServer: :fire: Linux下C++轻量级WebServer服务器

自己下载,然后拖到容器内

启动mysql服务

终端执行 service mysql start (这个容器没有sudo命令,没有sudo也可以执行)

// 刚刚学到了,可以在终端执行 mysql_secure_installation,来修改一些配置

查看mysql密码

终端输入 cat /etc/mysql/debian.cnf

修改项目配置

就是照着项目的readme修改对应值

  • 重构版项目
    • main.cpp 修改 user, passwd, databasename

    • config.cpp 修改 PORT为12321

  • 旧版项目
    • main.c 修改这里 connPool->init(...,修改用户名、密码、数据库名。具体看旧版项目的readme

    • http/http_conn.cpp 修改这里const char *doc_root =  具体看旧版项目的readme

进入mysql创建数据库和表,插入web服务的用户密码

照着readme执行。终端输入 mysql进入mysql的控制终端,然后进入以下内容

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');

启动server

  • 新版:
    • ./server
  • 旧版
    • ./server 12321

浏览器进入该web服务

在宿主机的浏览器中,键入 localhost:32123 即可

此时也可以在启动了的项目里面找到log信息

ok,到这里你应该可以启动了,没启动算我的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值