• 使用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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    一些基本说明:
    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来处理,这就可以正式开发了

  • 相关阅读:
    土耳其语翻译,如何选择专业翻译公司
    C语言日记 35 拷贝构造函数
    计算游泳时间-第10届蓝桥杯Scratch省赛真题第3题
    git commit 报错 “invalid path” “make_cache_entry failed for path” 解决方法
    图像处理-图像平滑
    常见的限流算法与实现
    AbstractControllerUrlHandlerMapping类简介说明
    SQLite导出数据库至sql文件
    这个比赛,中国电信拿了25个奖项!
    Spring Boot 应用启动时 java.lang.reflect.InaccessibleObjectException 问题的解决
  • 原文地址:https://blog.csdn.net/zh7314/article/details/133887186