• 如何将生产环境的服务Docker镜像拉取到本地进行调试


      背景

      很多时候我们在将开发环境的代码推送到GitLab上面以后,我们在测试的时候发现了问题后无法通过现有的日志输出级别来定位问题,比如我们需要看EFCore生成的SQL语句,在生产环境我们是不可能输出这些语句的,这个时候我们就需要将远程部署的Docker镜像拉取到本地然后进行调试,然后再看具体的日志以便排查疑难问题。

      比如我们在使用Serilog进行日志记录的时候,我们会在appsettings.Development.json和appsettings.Production.json中配置不同的Serilog格式

      在开发环境:

    "Serilog": {
        "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
        "MinimumLevel": "Information",
        "WriteTo": [
          {
            "Name": "Console"
          },
          {
            "Name": "File",
            "Args": { "path": "Logs/Dms.Parts.Parts.log" }
          }
        ]
      }
    

      在这里我们会将日志输出到本地的log文件中去。

      在生产环境:

    "Serilog": {
        "MinimumLevel": {
          "Default": "Information",
          "Override": {
            "Microsoft": "Warning",
            "System": "Warning",
            "Abp.Auditing.SimpleLogAuditingStore": "Warning"
          }
        },
        "WriteTo": [
          {
            "Name": "Console",
            "Args": {
              "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
            }
          }
        ]
      }
    

      配置好这些后,我们要做的第一步就是把生产环境的镜像拉取下来,然后调试,那么具体该怎样进行操作呢?

      操作

      1 找到GitLab上面的具体镜像

     图一 获取特定服务镜像名称

      2 登录GitLab

    docker login registry.sdtdev.net
    

      然后输入当前GitLab的用户名和密码,否则是不能进行当前镜像的拉取操作的。

      3 拉取镜像到本地

    docker run -e TZ=Asia/Shanghai -e ASPNETCORE__ENVIRONMENT=Development -e ASPNETCORE__URLS=http://+:80 -p 8082:80 --name ocr --rm registry.sdtdev.net/chery/adapters/ocr/master:40647
    

      这里需要注意的是:

      3.1 设置ASPNETCORE_ENVIRONMENT=Development,另外设置当前值为Development是为了保证Serilog日志输出级别为appsettings.Development.json中配置的日志输出级别,从而能够输出更多的日志出来。

      3.2 -p 8082:80将80端口映射为本地8082端口。

      3.3 --name表示为当前docker镜像的别名,这个非常重要的。

      3.4 --rm命令在此处的作用是当我们执行docker stop命令停止镜像的时候,后台会在docker容器中移除当前镜像。

      3.5  如果执行完毕后我们可以通过docker ps 或者docker images 来查看镜像的启动情况。

      4 本地Postman调试

      找到需要进行调试的本地URL,然后进行请求发送。

      图二 本地Postman进行调试

      这里需要注意在Windows7上面这个Docker镜像映射到本地的地址是192.168.99.100,如果是Windows10 此时我们可以使用localhost进行代替,这样发送请求后,我们就可以在cmd 或者powershell窗口中看到输出的log文件内容了

     图三 cmd窗口输出日志文件

      通过上面的操作我们就能够将原本本地调试的development级别的内容从log文件中取出,最后显示在cmd中从而帮助我们进行线上环境问题的排查,上面就是整个过程。

  • 相关阅读:
    2117 poj 割点练习
    hdu 2767强连通分量练习
    hdu 1301 kruskal 最小生成树
    hdu 1523 求割点和块
    hdu 1207Arbitrage 最短路劲
    hdu 1874 畅通工程续
    求最小点基 poj 1236
    Hdu 1301 prim算法 生成最小生成树
    我眼中的性能测试工程师
    Web系统的测试
  • 原文地址:https://www.cnblogs.com/seekdream/p/11873996.html
Copyright © 2020-2023  润新知