使用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的内核包

  1. 下载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 驱动的开发体验。

image

这个就自动看到之前在docker跑起来的容器,注意不要点那个X,不然就直接删除了

点击 → 访问容器
image

打开你项目的目录,就是/data目录下挂在的代码

选择cmake的插件编译工具
image

建议选择第二个,因为我们的drogon项目是cmake,让cmake来处理,这就可以正式开发了

posted on 2023-10-17 16:27  zh7314  阅读(292)  评论(0编辑  收藏  举报