使用Docker发布Asp.Net Core程序到Linux
CentOS安装Docker
按照docker官方文档来,如果有之前安装过旧版,先卸载旧版,没有的话,可跳过。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
首先安装docker依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加docker源到yum包管理器
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
可选项设置都跳过,直接安装
sudo yum install docker-ce docker-ce-cli containerd.io
启动docker,并设置为开机启动
sudo systemctl start docker
sudo systemctl enable docker
之前写了一个demo,在aspnetcore2.2中使用swagger,但是当时并没有启动docker支持,而且很早之前就上传到这台服务器了,其实就是本地虚拟机ヽ(ー_ー)ノ。但是没关系,可以直接在服务器里面来写这个Dockerfile,因为懒得再用VS添加docker支持,其实道理都是一样的,重要的是这个Dockerfile。
添加Dockerfile
在服务器进入到程序发布的路径,比如我是放在/home/wwwroot/swagger_demo/,进来之后用命令创建一个Dockerfile文件:sudo vi Dockerfile,内容如下:
FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE 24438
ENTRYPOINT ["dotnet", "swaggerDemo.dll"]
我这里是开放了24438端口,这个swaggerDemo应用在创建的时候就是这个端口,所以就用了这个端口。一般一台服务器如果只部署一个应用的话,默认开放80端口就好了。我也不知为什么,我就是喜欢用别的端口 ,╮(╯▽╰)╭
创建镜像
在有Dockerfile的这个目录下执行命令,注意命令最后是一个点。
sudo docker build -t swaggerdemo .
创建镜像过程中提示了一个warning,大家都懂的,程序员从来不接受威胁,况且终端提示Successfully build,所以继续下一步。┓( ´∀` )┏
启动容器
sudo docker run --name=swaggerdemo -p 24438:24438 -d swaggerdemo
仍然有这个警告,但是容器是启动成功了,可以通过sudo docker ps查看运行中的容器。在服务器打开Firefox(没错,虚拟机中安装了图形化界面),访问24438端口,程序正常。
解决IPv4 forwarding
虽然docker容器启动成功了,但是只能在服务器访问,外网访问不了。看来这个warning简直就是error啊,要解决这个警告,在/etc/目录下找到这个文件sysctl.conf,结果打开一看,
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
然而/sysctl.d/目录里面全是快捷方式,最后在/usr/lib/sysctl.d/目录找到了这个文件00-system.conf,在里面加上这一句:
net.ipv4.ip_forward = 1
然后重启网络和docker
systemctl restart network && systemctl restart docker
重新启动容器之后,在本地就可以通过服务器ip和端口访问了。
使用Docker发布Asp.Net Core程序到Linux的更多相关文章
- 发布ASP.NET Core程序到Linux生产环境
原文翻译:Publish to a Linux Production Environment 作者:Sourabh Shirhatti 在这篇文章里我们将介绍如何在 Ubuntu 14.04 Serv ...
- centOS docker运行Asp.net Core程序
[root@localhost chenhua]# docker run -it --rm -p : --name aspnetcore_sample microsoft/dotnet-samples ...
- Docker打包 Asp.Net Core应用,在CentOS上运行
本文主要介绍下运用docker虚拟技术打包Asp.net core应用. Docker作为一个开源的应用容器引擎,近几年得到广泛的应用,使用Docker我们可以轻松实现应用的持续集成部署,一次打包,到 ...
- Docker打包 Asp.Net Core应用,在CentOS上运行(转)
转载连接:https://www.cnblogs.com/ibeisha/archive/2017/09/09/netcoreondocker.html 本文主要介绍下运用docker虚拟技术打包As ...
- ASP.NET Core MVC 在linux上的创建及发布
前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...
- docker 初识之二(简单发布ASP.NET Core 网站)
在发布ASP.NET Core网站以前,先介绍一下DaoCloud 一个免费的docker云容器服务平台.登陆官方网站,创建一台docker主机,这台主机有120分钟的使用时间,对于鄙人学习使用正好合 ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...
- docker 安装jenkins 发布 asp.net core 2.0
安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...
- 从头认识一下docker-附带asp.net core程序的docker化部署
从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...
随机推荐
- 阿里druid连接池监控数据自定义存储
如何将druid连接池监控到的sql执行效率,连接池资源情况等进行持久化存储,方便系统运维分析优化,以下案例初步测试成功. 第一部: 新建MyDruidStatLogger类实现接口 extends ...
- docker 打印带时间的日志
1, 根据容器日志查看连接情况 docker logs 684 (因为从6.30日开是打印,太慢了.) 2,docker带参数的打印出日志 docker logs 684 --since=&quo ...
- MacBook Pro设置外接显示器竖屏显示 切换主显示器
切换主显示器设置 有一些使用 Mac 电脑的用户,比如笔记本用户,可能会由于屏幕太小想外接一个更大的显示器,也或是有多显示输出的需求.当 Mac 电脑上有了多个显示器以后,此时便会有主副显示区之分了. ...
- 免费好用的SSH手机客户端
简单说一些,SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专 ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- ISO/IEC 9899:2011 条款6.9——外部定义
6.9 外部定义 语法 1.translation-unit: external-declaration translation-unit external-declaration extern ...
- 转 zabbix 优化方法 以及 后台数据库查询方法 两则
############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...
- Python - Django - ORM 自定义表名
通过 Django 建立的表 命名方式为:项目名_表名 可以将该默认命名方式进行修改 models.py: from django.db import models class Person(mode ...
- Mathjax与LaTex公式简介
MathJax与LaTex公式简介 (转载) PS: 原文链接写的非常好!!! 博主写这篇文章,一是为了防止原链接失效,二是在cnblogs上测试MathJax; 本文从math.stackexcha ...
- DevOps - 持续集成(Continuous Integration)
1 - 持续集成简介 持续集成(Continuous integration,简称CI)是软件的开发和发布标准流程中最重要的部分. 作为一种开发实践,在CI中可以通过自动化等手段高频率地去获取产品反馈 ...