使用docker搭建drogon windows10,linux,mac下开发环境
2023年10月13日14:52:26
本机环境 Windows 10 专业版 22H2 操作内核19045.2965
如果直接在windows,linux,mac上直接搭建环境确实有一点难度,之前drogon官方并未提供官方镜像,现在有了docker镜像确实方便了,其实我是最近才有
简述安装docker desktop,windows的虚拟化有2个方案hyper-v和wsl
WSL2 版本要求
WSL 版本 1.1.3.0 或更高版本。
Windows 11 64 位:家庭版或专业版 21H2 或更高版本,或企业版或教育版 21H2 或更高版本。
Windows 10 64 位:家庭版或专业版 21H2(内部版本 19045)或更高版本,或企业版或教育版 21H2(内部版本 19045)或更高版本。
在 Windows 上打开 WSL 2 功能。有关详细说明,请参阅Microsoft文档.
成功运行需要以下硬件先决条件 Windows 10 或 Windows 11 上的 WSL 2:
64 位处理器,具有二级地址转换 (SLAT)
4GB 系统内存
必须在 BIOS 设置。有关详细信息,请参阅虚拟化。
要运行 Windows 容器,您需要 Windows 10 或 Windows 11 专业版或企业版。 Windows 家庭版或教育版仅允许您运行 Linux 容器。
Hyper-V和Windows 容器 版本要求
Windows 11 64 位:专业版 21H2 或更高版本,或企业版或教育版 21H2 或更高版本。
Windows 10 64 位:Pro 21H2(内部版本 19045)或更高版本,或企业版或教育版 21H2(内部版本 19045)或更高版本。
对于 Windows 10 和 Windows 11 家庭版,请参阅 WSL 2 后端选项卡中的系统要求。
Hyper-V 和容器 Windows 功能必须打开。
成功运行客户端需要以下硬件先决条件 Windows 10 上的 Hyper-V:
64 位处理器,带二级地址转换 (SLAT)
4GB 系统内存
必须在 BIOS 设置。有关详细信息,请参阅虚拟化。
官方说明文档:
https://docs.docker.com/desktop/install/windows-install/
官方是建议wsl2,因为性能更好,支持的功能更多,但是安装也麻烦一点
Hyper-V安装简单,只需要在 控制面板,程序和功能,启动关闭windows功能,勾选 Hyper-V
wsl2安装
1,检查WSL2的要求:win+R打开运行,然后输入winver检查windows版本
2,启用适用于 Linux 的 Windows 子系统:打开powershell 已管理员方式 并输入:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
3,启用虚拟化:以管理员打开powershell输入下列命令
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
建议重启机器之后安装wsl2的内核包
- 下载X64的WSL2 Linux内核升级包并安装
下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
如果下载不了,使用迅雷下载文件
官方地址:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package
5,设置WSL默认版本
wsl --set-default-version 2
下载 安装 Docker Desktop
下载地址:https://docs.docker.com/desktop/install/windows-install/
点击 Docker Desktop for Windows 下载。不行就用迅雷下载
安装之后,如果安装了wsl2,在Docker Desktop的在设置
Use the WSL 2 based engine
WSL 2 provides better performance than the Hyper-V backend
是选上的,如果安装的是Hyper-V就不是勾上的
参考:
https://zhuanlan.zhihu.com/p/386590591
https://learn.microsoft.com/zh-cn/windows/wsl/install
查看是否安装成功
wsl -l -v
接下来使用就是正常的命令了,windows,linux,mac都没什么区别了
官方地址嘎了,使用镜像地址:
{
"registry-mirrors":[
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false
}
docker地址:https://hub.docker.com/r/drogonframework/drogon/tags
现在嘎了,访问你懂的
注意:这个挂在的目录是不能随便删除和修改的
拉取镜像:
docker pull drogonframework/drogon:latest
运行镜像:linux demo
docker run -p 8778:8777 -v /data/code/drogon:/data/drogon -it drogonframework/drogon /bin/bash
/data/code/drogon宿主机目录,/data/drogon容器目录,8777是drogon的默认端口
windows demo
docker run -p 8778:8777 -v D:/docker/code:/data -it drogonframework/drogon /bin/bash
进入bash,这就是drogon的工具目录
root@9e7cf269f153:/install/drogon# ls
build CMakeLists.txt config.example.yaml drogon.jpg LICENSE README.md third_party
build.sh cmake_modules CONTRIBUTING.md examples nosql_lib README.zh-CN.md trantor
ChangeLog.md conanfile.txt docker format.sh orm_lib README.zh-TW.md
cmake config.example.json drogon_ctl lib package.xml test.sh
drogon_ctl -v or dg_ctl -v查看信息
root@9e7cf269f153:/install/drogon# dg_ctl -v
_
__| |_ __ ___ __ _ ___ _ __
/ _` | '__/ _ \ / _` |/ _ \| '_ \
| (_| | | | (_) | (_| | (_) | | | |
\__,_|_| \___/ \__, |\___/|_| |_|
|___/
A utility for drogon
Version: 1.9.0-rc.1
Git commit: 94ca651cbdbdf4038bc0392bcf2d897661996f7c
Compilation:
Compiler: g++-11
Compiler ID: GNU
Compilation flags: -O3 -DNDEBUG -std=c++17 -I/usr/include/jsoncpp -I/usr/local/include
Libraries:
postgresql: yes (pipeline mode: yes)
mariadb: yes
sqlite3: yes
ssl/tls backend: OpenSSL
brotli: no
hiredis: yes
c-ares: yes
yaml-cpp: no
cd /data/
创建新项目,注意是挂在目录就是/data,外部映射的是
root@9e7cf269f153:/data# pwd
/data
root@9e7cf269f153:/data# ls
web
root@9e7cf269f153:/data# drogon_ctl create project drogon
create a project named drogon
cd /data/drogon/build/
cmake ..
make
./drogon
注意:默认项目是没提供任何如无,能运行说明项目运行流程是没问题的,如果有服务访问
http://127.0.0.1:8787/,docker映射端口默认是8787
一些基本说明:
1,运行环境在docker里面,挂载代码目录到docker目录运行
2,建议直接在windows里面运行,如果还在linux里跑,会比较麻烦,还是remote-shh
vscode连接docker Container
为什么要用vscode连接docker Container,因为这样直接在windwos打开挂在的目录的代码是没有代码提示和代码追踪的,cmake不会自动运行Container里面的规则
建议先把vscode的不必要的插件都删除,因为可能会造成有些插件问题,会被自动卸载,可能是冲突造成的
简单的只需要安装
1,Dev Containers https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
2,C/C++ Extension Pack https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack
这两个是基础的插件,Dev Containers连接本地docker的容器,C/C++ Extension Pack包含c++的语法和代码提示,cmake工具
Remote Development这个插件包含四个插件:
Remote - SSH - 通过使用 SSH 打开远程计算机/VM 上的文件夹,在任何位置使用源代码。支持x86_64、ARMv7l (AArch32) 和 ARMv8l (AArch64) 基于 glibc 的 Linux、Windows 10/Server (1803+) 和 macOS 10.14+ (Mojave) SSH 主机。
Remote - Tunnels - 通过使用 VS 代码隧道(而不是 SSH)打开远程计算机/VM 上的文件夹,在任何位置使用源代码。
Dev Containers - 通过打开装载到容器中或容器内的任何文件夹,使用单独的工具链或基于容器的应用程序。
WSL - 通过打开适用于 Linux 的 Windows 子系统中的任何文件夹,从舒适的 Windows 中获得 Linux 驱动的开发体验。
这个就自动看到之前在docker跑起来的容器,注意不要点那个X,不然就直接删除了
点击 → 访问容器
打开你项目的目录,就是/data目录下挂在的代码
选择cmake的插件编译工具
建议选择第二个,因为我们的drogon项目是cmake,让cmake来处理,这就可以正式开发了
QQ二群 166427999
博客文件如果不能下载请进群下载
如果公司项目有技术瓶颈问题,请联系↓↓
如果需要定制系统开发服务,请联系↓↓
技术服务QQ: 903464207