ubuntu中使用docker部署.netcore2.1
概述
.netcore发布这么久,到现在才在项目中实际运用,之前算是了解一点,一般找工作都会问是否运用过.netcore,软件研发来说,如果这个技术没用过,觉得挺难,其实不难。.netcore主要是跨平台,可以部署在不同的操作系统上。
本文通过一些实例,将.netcore Api项目部署在linux环境中。
用到的工具
Linux : Linux version 4.18.0-17-generic (buildd@lcy01-amd64-022) (gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1))
Windows与Linux交互工具:MobaXterm 6.6.exe,支持远程连接和上传附件功能
搭建步骤
- 创建.netcore2.1 Api项目
我的IDE是VS 2017,创建一个.netcore Api项目后,目录结果如图

如开始时未添加Docker支持,选择是linux还是windows,具体操作如下

- 修改Docker配置文件,
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE
EXPOSE FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["./ApiNetCore.csproj", "./"]
RUN dotnet restore "ApiNetCore.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "ApiNetCore.csproj" -c Release -o /app FROM build AS publish
RUN dotnet publish "ApiNetCore.csproj" -c Release -o /app FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "ApiNetCore.dll"]
- 将本地源代码通过MobaXterm上传到Linux目录,显示目录结构如下:

- 开始构造镜像image:运行命令【sudo docker build -t apinetcoredocker:1.0.0 . 】
命令中,【apinetcoredocker】代表镜像名称,可以修改成自己所需要的名称。也可以为镜像添加tag,修改【apinetcoredocker】成【apinetcoredocker:1.0.0】为镜像打上1.0.0的tag标签。命令最后面的【.】号是必要的,是dockerfile在当前目录运行docker的意思。详细命令可查看:http://www.runoob.com/docker/docker-build-command.html。
镜像创建成功如图

- 创建容器并运行
在运行应用程序【sudo docker run --name apinetcoredocker1 -p 8009:80 apinetcoredocker:1.0.0】
-p是8009是容器对外端口,80是容器内机器端口。意思是映射外网8081端口到本地容器80端口。

- 最后在浏览器中输入地址,进行测试

参考实例:https://www.cnblogs.com/alunchen/p/10139356.html
感谢原著分享!
ubuntu中使用docker部署.netcore2.1的更多相关文章
- ubuntu中安装Docker
系统要求: 必须时64位的系统,内核最低要求是3.10 查看系统内核: $ uname -r 3.11.0-15-generic 获取最新版本打Docker: $ wget -qO- https:// ...
- 在Ubuntu中安装Docker和docker的使用
1.在Ubuntu中安装Docker 更新ubuntu的apt源索引 sudo apt-get update 安装包允许apt通过HTTPS使用仓库 sudo apt-get install \ ap ...
- Ubuntu中实现Docker内安装jenkins+jenkins远程触发
前面做了在ubuntu中安装jenkins+docker实现自动部署,但是得安装jdk8+tomcat8环境,比较麻烦,因此本文记录如何将jenkins直接装在dockers内并且实现远程触发功能. ...
- Ubuntu 中安装 Docker
检查 Device Mapper 是否存在 sch01ar@ubuntu:~$ ls -l /sys/class/misc/device-mapper 安装 Ubuntu 维护的版本 sch01ar@ ...
- Ubuntu中的Docker搭建Tensorflow环境
一.docker环境安装 1)更新.安装依赖包 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates ...
- Centos中使用Docker部署Apollo
采用微服务开发框架开发项目时会涉及多个系统,如果要更改配置参数需要在多个系统间逐一更改,比较费时,而且容易遗漏,效率低下,次问题可以采用Apollo配置中心的方式解决,下面将介绍如何配置: 准备环境: ...
- 跟我一起在ubuntu中安装docker
卸载旧版本 $ sudo apt-get remove docker docker-engine docker.io 查看ubuntu版本 设置安装源 通过如下步骤,设置安装源仓库,这里我们使用阿里源 ...
- ubuntu中执行docker info出现警告信息WARNING: No memory limit support 或 WARNING: No swap limit support
docker info 指令报若下错误:WARNING: No memory limit support 或WARNING: No swap limit support 解决方法: 1.打开/etc/ ...
- WSL2+Docker部署RabbitMQ以及在Asp.net core 中使用RabbitMQ示例(1)
本文主要在于最近因疫情不能外出,在家研究的一些技术积累. 主要用到的技术以及知识点: WSL 2 WSL 2+Docker Docker+RabbitMQ 在ASP.NET Core中使用Rabbit ...
随机推荐
- Java多线程:线程间通信之volatile与sychronized
由前文Java内存模型我们熟悉了Java的内存工作模式和线程间的交互规范,本篇从应用层面讲解Java线程间通信. Java为线程间通信提供了三个相关的关键字volatile, synchronized ...
- Linnux入门之简介
一.Linux简介 Minix(教授实验) -> Linux(大三学生Linus)企鹅作为吉祥物 linux主要分为内核版本和发行版本 linux 内核版本 :官网下载:https://www. ...
- mint-ui之picker爬坑记
picker的数据来源为动态获取时,数据无法正常渲染!因为方法不对,所以坑大了!深刻地体会到'业不精,我之过',谨以此文,深刻地记录一下踩坑及爬坑的整个过程,以便日后不再入坑,也给后来者提供一下参考 ...
- Netty中如何序列化数据
JDK提供了ObjectOutputStream和ObjectInputStream,用于通过网络对POJO的基本数据类型和图进行序列化和反序列化.该API并不复杂,而且可以被应用于任何实现了java ...
- 如何使用RedisTemplate访问Redis数据结构
RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...
- Linux kernel的中断子系统之(四):High level irq event handler
返回目录:<ARM-Linux中断系统>. 总结:从架构相关的汇编处理跳转到Machine/控制器相关的handle_arch_irq,generic_handle_irq作为High l ...
- 在基于Windows系统的PHP虚拟主机上实现域名的301永久重定向
作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=581 操作背景: 当网站在更换或添加域名.进行网址规范化或删除旧页面时,出于对用户使用体验和搜索引擎优化方面的考虑就需要 ...
- JSP设置文件编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 在Windows Server 2008 R2下搭建jsp环境(四)-在测试的过程中可能出现的问题
环境基本部署好了之后,便开始测试,一定要让他经得起"考验",他才会值得你的信赖.Tomcat服务器部署成功的的验证方法(默认端口的情况下): 1.loacalhost:8080 2 ...
- MVC之图片验证码
MVC之图片验证码 controller中的action方法public ActionResult GetValidateCode() { ValidateCode vCode = new Valid ...