原文链接:https://blog.csdn.net/l491453302/article/details/80807861
VC++程序部署
这是我使用windows版本的docker的主要目的,也是绕了我不少时间的地方。Microsoft提供了两个基础的镜像用于构建Windows APP部署的Docker:microsoft/nanoserver和microsoft/windowsservercore,如果你了解下这两个镜像就会知道他们非常庞大,前者1G多,后者10G多,明白人一上来可能就会选择镜像大小小的nanoserver作为基镜像,但是在我自己的实际测试中,nanoserver构建的镜像在跑C++程序时,既不报错也不按照程序原本的设计打印输出信息,折磨人得很。原因的话应该是这个基镜像中缺少一些基础环境dll,我尝试在里面安装vc_redist也不能解决,我认为这是最坑的地方。最后我采用了microsoft/windowsservercore,编译了一个基础的HelloWorld程序。
代码如下:
#include"stdafx.h"#include<iostream>int main(){std::cout<<"Hello LMW"<<std::endl;int k;std::cin>>k;return 0;}
并用VS2015编译输出了Hello.exe,这个时候虽然有了exe但是这基镜像中的环境中依然缺少一些环境库(可能是没有安装vc_redist吧),这个时候通过vs的dumpbin.exe程序来查看exe依赖的所有的dll,并把这些dll和exe一起copy到docker镜像中才行。使用dumpbin.exe的命令是:dumpbin.exe /DEPENDENTS Hello.exe(注意正确的路径)。在C:\Windows\System32中找到这些dll即可。
把exe和dll放到一个文件夹中,本文中放在了test文件下,并编写dockerfile
FROM microsoft/windowsservercoreCOPY test C://testWORKDIR c://testCMD Hello.exe
构建docker:
docker build –t test .
即可完成docker的构建,运行docker:docker run test,即可看到输出“Hello LMW”。
至此docker中部署VC++程序就完成了,主要需要注意的是采用windowsservercore作为基镜像,并注意依赖的dll一定要完整。
————————————————
版权声明:本文为CSDN博主「铭崴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
