ASP.NET Core 2.1 使用Docker运行

1.新建一个 ASP.NET Core 2.1 项目

image.png

然后运行一下项目,确保我们刚刚建立的项目可以正常运行。

image.png

2.编写 Dockerfile

新建一个文本文件,命名为 Dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]

这里我们需要用到官方的镜像:microsoft/dotnet:2.1-aspnetcore-runtime

如果要尝试更小的镜像,可以试试 microsoft/dotnet:2.1-aspnetcore-runtime-alpine ,这镜像使用了alpine 一款精简版极小的linux,但是随之而来的就是阉割了一些功能,实际使用的时候需要测试,比如国际化支持,它默认在这个镜像里面没有开启,需要配置环境变量来开启。

需要设置Dockerfile的如下属性,保证其能复制到发布目录:

image.png

3.构建Docker镜像

我们将镜像命名为 :aspnetcoredocker

进入到发布文件目录,执行命令便可打包镜像:

docker build -t aspnetcoredocker .

我们可以编写 发布+构建 的脚本。

Windows:

文件名:build.bat

@echo off

echo "Windows Docker build"

cd ../AspNetCore.Docker

dotnet publish -c Release -o ../publish

cd ../publish

echo "publish success"

docker build -t aspnetcoredocker .

文件名:Linux:

build.sh

#!/bin/bash

echo Linux Docker build

cd ../AspNetCore.Docker

dotnet publish -c Release -o ../publish

cd ../publish

echo publish success

docker build -t aspnetcoredocker .

文件夹结构如下图:

image.png

执行构建:

./build.sh

image.png

构建成功后可以通过 docker images 命令查询到我们构建的镜像:

image.png

若在linux下执行sh脚本时,遇到错误“-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory“,请通过vim/vi编辑sh脚本,按:建,输入 set ff=unix,然后回车、wq保存即可

4.运行镜像

通过命令运行

docker run --name=aspnetcoredocker -p 7777:80 -d  aspnetcoredocker

--name:指定容器名称

-p:指定容器端口

-d:指定容器 后台运行

出现一长串字符串,便是表示运行成功:

image.png

我们也可以通过 docker ps 命令,查询我们正在运行的容器:

image.png

我们还可以通过 docker logs <容器名称或者id>来查看启动日志:

image.png

5.验证访问

我们可以通过 curl命令来直接访问我们容器启动的asp.net core 网站:

image.png

或者直接通过浏览器访问:

image.png

至此,我们通过Docker运行asp.net core 2.1应用程序就结束了。

6.资料

本文所用代码:https://github.com/stulzq/BlogDemos/tree/master/AspNetCore.Docker

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学自动化测试

Fiddler抓包1-抓firefox上https请求

前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书。 一、网页不安全 ...

3435
来自专栏晓晨的专栏

ASP.NET Core 2.1 使用Docker运行

1482
来自专栏生信宝典

Linux学习-文件操作

其它新建文件的方式 nano类似于Windows下记事本的功能,nano filename就可以新建一个文件,并在里面写内容;ctrl+x退出,根据提示按Y保存...

2377
来自专栏夏时

Win10突然断开Wifi并无法连接的解决办法

3274
来自专栏逸鹏说道

CentOS 7 Root用户密码重置

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 开机的时候按e (如果正在使用,你可以...

3216
来自专栏编程

2.7 配置编辑器

本节讲解VS Code Python环境的配置作为参考。在后续章节的Python程序示例都是在配置好的环境下编写。 VS Code通过插件进行功能扩展,首先安装...

1725
来自专栏实战docker

制作mongodb的Docker镜像文件

在上一章《Docker下,极速体验mongodb》中,我们快速搭建了mongodb并在控制台做了基本的体验,当时用的镜像是官方发布在hub.docker.com...

2529
来自专栏hotqin888的专栏

Windows上部署onlyoffice document server并用go语言进行二次开发实现企业实时文档协作功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

812
来自专栏懒人开发

Centos上phpstudy搭建

自己最近也没有怎么弄过linux了 一些原因,自己买了一个Centos的腾讯云服务器 既然买了玩玩,就不要放着了 自己搭建一个php的集成环境 向所有认...

1173
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Webmin

Webmin是适用于任何Linux机器的基于Web的控制面板,可让您通过基于Web的现代界面管理服务器。使用Webmin,您可以动态更改常用软件包的设置,包括W...

821

扫码关注云+社区