Visual Studio 内搭建Docker支持
创建项目
1.搭建一个ASP.NET Core Web API 项目,其他类型项目原理类似。
2.配置新项目,项目名称为DockerDemo
*3. 配置信息勾选启用Docker,并选择Docker OS 环境为 Linux.(根据实际情况选择)
4.完成配置后,会发现生成的项目文件中有一个DockerFile 文件,代表Docker支持已经添加
5.添加测试代码
首先我们添加一个 DemoController 类并添加测试代码
[ApiController]
[Route("Demo")]
public class DemoController : ControllerBase
{
[HttpGet]
[Route("Get")]
public string Get()
{
string model = "{\"code\":\"0\",\"error\":\"" + "0" + "\",\"data\":\"" + _response + "\"}";
return model;
}
private static string _response;
public static void ResKey(string key)
{
_response = key;
}
}
之后我们开始编辑appsettings.json 文件 加入测试变量
"Demo": {
"Response": "DockerDemo"
}
最后我们在 Program.cs 代码内加入
DemoController.ResKey( builder.Configuration.GetValue<string>("Demo:Response"));
至此测试需要的代码基本完成。
6.launchSettings.json 配置参数解释
{
"iisSettings": {
"windowsAuthentication": false,//是否启用Windows身份验证
"anonymousAuthentication": true,//是否启用匿名身份验证
"iisExpress": {
"applicationUrl": "http://localhost:53445",//应用启动的Url路径。
"sslPort": 0 //启用SSL的端口
}
},
"profiles": {
"IIS Express": {
"commandName": "Project",
"launchBrowser": true, //是否在浏览器中启动
"environmentVariables": { //将环境变量设置为键/值对
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
我们发现在 launchSettings.json 中存在两个 applicationUrl 。 其中IISExpress 对应的启动方式 为 IIS Express 。 profiles 对应的为项目本身。
对应关系如下图:
7. Docker镜像生成
右击项目文件里面的DockerFile文件,选择生成Docker镜像。等待命令执行结束。
当VS镜像生成结束后,可以在Docker -Images 内 看到刚刚最新生成的镜像文件。
使用VSCode 进行镜像文件的配置以及发布
1.打标签
docker tag dockerdemo:latest dockerdemo:1.0.0
在CMD 中执行 docker tag 命令,上述语句意思为将最新的 dockerdemo 镜像 标记为 dockerdemo:1.0.0,在CMD中执行完成后可以在Docker-Images 中看到多出一个 dockerdemo:1.0.0 的镜像。
2.VsCode 安装 Docker插件
在VsCode扩展中搜索Docker插件并安装,安装完成后,VSCode左侧会显示一个Docker图标。
点击Docker扩展图标发现和Docker本身显示的内容差距不大。
3. docker-compose.yml 编写
version: '3.4' //compose版本
services:
dockerservices:
image: dockerdemo:1.0.0 //镜像版本
restart: always //重启
container_name: dockerdemo
ports:
- 8089:80 //端口映射
volumes:
- ./appsettings.json:/app/appsettings.jsonimage.png //文件映射
在VsCode中编写yml 文件。
复制appsettings.json文件。
4.发布镜像
在 docker-compose.yml 文件内右击,选择compose up ,等待命令执行完成。
命令执行完成后在Docker 内可以看到 dockerdemo 正在运行。
5.测试发布的服务
在 postman内访问我们之前编写的测试接口,发现能够正常返回。测试通过。
修改Vscode内的 appsetting.json文件。
在 docker-compose.yml 文件内右击,选择compose restart ,等待命令执行完成,重启服务。
再次通过 postman内访问我们之前编写的测试接口,发现能够正常返回,并且参数已经发生改变。测试通过。
以上是Docker镜像发布的基本流程。