本教程展示了如何建立一个。net核心控制台应用程序在一个码头工人容器使用LEADTOOLS SDK。
概述 | |
---|---|
总结 | 本教程介绍了如何用集装箱装一个。net核心控制台应用程序使用LEADTOOLS码头工人。 |
完成时间 | 30分钟 |
平台 | net核心控制台应用程序使用码头工人 |
IDE | Visual Studio 2017中,2019年 |
开发许可 | 下载LEADTOOLS |
在工作之前用集装箱装。net核心应用程序与码头工人——c#。net核心教程中,确保您安装LEADTOOLS SDK以及码头工人桌面。如果你没有下载,使用下面的链接访问各自的安装程序。
定位。net核心控制台项目文件夹。
一旦您希望使用. net核心项目,重命名项目的文件夹结构< PROJECT_NAME > \ App \ < PROJECT_NAME.csproj >
。确保您将所有所需的文件和文件夹项目进入应用程序
目录.csproj
所在地。
下一个的应用程序
文件夹中创建一个新文件夹数据
,它将包含任何外部资源所需的应用程序(即图片加载的应用程序)。编辑您的代码在加载文件从本地路径和修改的数据
文件夹一样,/应用程序/数据/ < FILE_NAME >
,在那里< FILE_NAME >
是你是加载文件的名称。
如果你设置LEADTOOLS许可证,创建一个新文件夹许可证
在App \数据
目录,并把你的Leadtools.lic
和Leadtools.lic.key
文件存在。编辑您的代码的应用程序看起来以下文件路径加载您的许可文件:
/ app /数据/授权/ Leadtools.lic
/ app /数据/授权/ Leadtools.lic.key
导航到< PROJECT_NAME >
文件夹中包含应用程序
目录中。创建一个新文件命名Dockerfile
。这个文件将包含所有的指令构建集装箱码头工人。的Dockerfile
指示在集装箱码头工人安装所需的依赖项。
这部分的Dockerfile
建立项目文件将运行在容器中。首先,它安装SDK应用程序所需的(相应改变以匹配、信息发现hub.docker.com/_microsoft-dotnet-sdk)。
接下来,它集容器的当前目录/应用程序
和所有副本.csproj
文件在本地应用程序
目录的容器应用程序
目录和恢复项目。
它在当地的所有必要的文件副本应用程序
和应用/数据
目录的容器应用程序
和/应用程序/ /数据
目录。最后,它发布的发布版本项目容器的app /出
目录中。
将下面的代码添加到Dockerfile
:
# # #建筑项目(hub.docker.com/_/microsoft-dotnet-sdk)
从mcr.microsoft.com/dotnet/core/sdk:3.1 build-env
WORKDIR /应用程序
# CSPROJ复制和恢复
复制/ App / \ *。csproj。/
dotnet恢复运行
#复制一切其他的并建立
复制/ App /
副本。/ App /数据/ /数据
运行dotnet发布- o - c版本。/ /
下一个部分Dockerfile
将在容器设置运行时环境。
首先,它安装运行时所需的应用程序(匹配相应的变化,信息发现hub.docker.com/_microsoft-dotnet-sdk)。然后设置容器当前目录临时
并添加源的debian软件包sources.list
文件能够通过利用,把所需的依赖项apt-get
。接下来,它设置一个容器环境DEBIAN_FRONTEND
非交互式防止确认或可选的输入请求通过安装依赖关系。最后,它更新apt-get
和安装apt-utils
和wget
进一步促进安装其他的依赖关系。
将下面的代码添加到Dockerfile
:
# # #建筑运行时图像(hub.docker.com/_microsoft-dotnet-runtime)
从mcr.microsoft.com/dotnet/core/runtime:3.1
WORKDIR / temp
#添加包源
运行回声”黛比http://ftp.us.debian.org/debian拉伸主要contrib”> > /etc/apt/sources.list
#生成恰当的缓存
ENV DEBIAN_FRONTEND非交互的
运行apt-get更新\
& & apt-get安装- y apt-utils wget
本节安装所需的依赖项LEADTOOLS为了在容器中运行。
微软字体部分只需要与一个GUI应用程序。的wkhtmltopdf
部分需要处理HTML和提供依赖项许可处理。删除最后一行恰当的
列出我们生成的,因为他们不再需要。
将下面的代码添加到Dockerfile
:
#安装导致依赖性(https:/ /m.ahtuanjie.com/help/sdk/v21/main/api/getting-started-with-the-leadtools-linux-libraries-and-demo-projects.html)
运行apt-get安装- y \
uuid- devuuid运行gcc g++ libc-dev-bin \
linux-libc-dev libx11-6 libx11-dev libxt6 \
libxt-dev sqlite3 libsqlite3-dev libfreetype6
#安装微软字体(http:/ /askubuntu.com/a/25614)
#运行回声“ttf-mscorefonts-installer msttcorefonts / accepted-mscorefonts-eula选择真正的“| debconf-set-selections
#运行apt-get安装- y \
# fontconfig ttf-mscorefonts-installer
#安装wkhtmltopdf (http:/ / wkhtmltopdf.org)
wget - q https运行:/ /github.com/wkhtmltopdf/packaging/releases/download/0.12.6 buster_amd64.deb——1/wkhtmltox_0.12.6 - 1.
运行apt安装- y -允许匿名\
/ wkhtmltox_0.12.6 - 1. buster_amd64.deb
运行ldconfig
#清理缓存
运行rm射频/var/lib/apt/lists/*
在最后一节中,我们做最后的清理,最后设置,并指定如何初始化应用程序。
设置容器当前目录应用程序
和删除临时
目录我们上面,因为它不再是必要的。如果您的应用程序是一个基于web的应用程序,取消80年公开
所以您的应用程序将监听端口80
。根据需要更改端口号。粘贴的内容/ app /
目录存储在容器中buid-env
部分的应用程序
文件夹中。最后,我们设置命令,dotnet < PROJECT_NAME > . dll
当我们开始跑,触发应用程序运行的容器。
将下面的代码添加到Dockerfile
:
#删除临时文件
WORKDIR /应用程序
运行rm射频/ temp
# 80年公开
#复制并部署应用程序
复制——从= build-env / app /。/
入口点(“dotnet”,“< PROJECT_NAME > . dll”]
请注意
编辑
入口点(“dotnet”、“< PROJECT_NAME >。dll”)
线的地方< PROJECT_NAME >
是你的项目dll文件的名称。
在相同的目录中创建另一个文件Dockerfile
命名.dockerignore
。这个文件是使用的码头工人忽略指定的文件和目录。这将减少码头工人的时间需要构建项目,因为它不会将整个目录迁移到容器正在建造中。
添加以下的.dockerignore
文件:
本\
obj \
打开命令提示符/终端或Windows PowerShell并导航到您的项目目录中包含Dockerfile
使用下面的命令:
cd“< PathToProject >”
构建和集装箱码头工人的名字< PROJECT_NAME >
所有的小写字母和一个词,使用下面的脚本:
码头工人建造- - - - - -t < PROJECT_NAME >。
为码头工人可能需要几分钟才能完成。一旦完成,就可以运行。
一旦建码头工人形象,使用下面的命令运行容器:
码头工人运行< PROJECT_NAME >
请注意
你需要包装
Console.Read
在你的代码在while循环捕获输入。此外,码头工人应用程序需要运行在交互模式下为了捕捉输入。看下面的例子。
代码以捕获回车键退出
:
而(真正的)
{
Console.WriteLine (“新闻(x)退出……”);
var确认= Console.ReadLine ()。Substring (0,1);
如果(confirmation.Equals (“x”,StringComparison.OrdinalIgnoreCase))
{
打破;
}
}
Console.WriteLine (“应用程序退出。”);
如果您的应用程序需要用户输入,您需要运行下面的命令,允许交互。
码头工人运行- - - - - -我< PROJECT_NAME >
如果您的应用程序保存一个文件,你可以通过下面的命令直接到一个本地目录。这将复制任何容器的/应用程序/数据/输出
文件夹到本地C: / Temp
目录中。
码头工人运行- - - - - -v/c/温度:/应用程序/数据/输出< PROJECT_NAME >
本教程展示了如何用集装箱装一个。net核心控制台应用程序在一个码头工人容器。