分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

使用Docker部署ASP.NET Core应用程序实践

发布时间:2023-09-06 01:36责任编辑:苏小强关键词:.NETDocker

前言

最近把很火的Docker给看了,于是就磨拳擦掌要去实践一下。于是就拿之前一个aps.net core的项目(已被停止)去练手。该项目之前在ubuntu14.04上确保可以正常运行,所以docker化应该不会有太多问题。搜索了下微软提供了asp.net core的官方docker镜像,但我为了学习docker决定从linux的基础镜像开始制作docker镜像,同时为了少绕弯路,决定从确保能运行的ubuntu14.04开始.

准备

环境

OS:Ubuntu 14.04
.NET Core SDK:2.0
DB:mysql

编译发布程序

sudo dotnet publish -o ..\publish -c Release -r ubuntu.14.04-x64

将程序编译成ubuntu平台的二进制文件.

构建数据库用Docker容器

既然应用程序Docker化了,那数据库肯定也要Docker化,这里数据库我用的Mysql,直接使用的官方镜像的mysql:5.7

sudo docker run --name demo-mysql -v /home/yotsuki/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7

这里使用了将本地路径/home/yotsuki/datadir设为映射为数据库目录,并把数据库的3306端口给映射出来。

修改应用程序配置文件

因为docker容器的IP地址不固定,稍后的应用程序容器打算使用--link方式连接到数据库,于是需要把应用程序配置文件中的数据库连接从IP改为hostname,就先定义为demodb吧

 ????// "ConnectionString": "server=127.0.0.1;user id=root;persistsecurityinfo=True;database=pmis;password=123456;port=3306;", ????"ConnectionString": "server=demodb;user id=root;persistsecurityinfo=True;database=pmis;password=123456;port=3306;",

编写Dockerfile 文件

# Version:0.0.1FROM ubuntu:14.04MAINTAINER yotsukiRUN cp /etc/apt/sources.list /etc/apt/sources.list_backupCOPY ./sources.list /etc/apt/sources.listRUN apt-get install libunwind8 liblttng-ust0 libcurl3 libssl1.0.0 libuuid1 libkrb5-dev zlib1g libicu52 -yRUN apt-get updateRUN mkdir /usr/bin/pmis_webCOPY ./publish /usr/bin/pmis_webWORKDIR /usr/bin/pmis_webENTRYPOINT ./PMIS.WebAPIsEXPOSE 80

我使用了从官方的ubuntu14.04镜像开始构建容器。
sources.list是国内访问官方镜像过慢的无奈之举,我做了一个163镜像文件直接COPY进去了(我知道这样不好,但这不是重点)
根据微软官方文档查到要想运行.net core程序需要安装以下几个包,于是就先使用apt-get安装必须包

apt-get install libunwind8 liblttng-ust0 libcurl3 libssl1.0.0 libuuid1 libkrb5-dev zlib1g libicu52 -yapt-get update

然后创建目录并copy程序文件进去

RUN mkdir /usr/bin/pmis_webCOPY ./publish /usr/bin/pmis_webWORKDIR /usr/bin/pmis_web

最后设置启动命令,并暴露端口

这样Dockerfile就编写完成了

sudo docker build -t demo-web .

运行镜像

 sudo docker run -d --name demowebapp --link demo-mysql:demodb -p 80:80 demo-web

打开我们的浏览器输入127.0.0.1 就能看到程序在运行了
至此我们的一个简单的docker化的asp.net core应用程序就部署完毕了。

总结

因为.net core的跨平台特性保证了.net 也能拥抱docker,这是一件大好事。
在学习docker过程中,我感觉到容器化的.net程序和我们以前开发的还是要有一些不同的。比如配置文件中的数据库链接,这里虽然我该ip为demodb,并使用--link链接了,但这是我事先在编译docker镜像前固定好了名字。我觉得可能比较好的做法应该是通过docker run命令传进来或者通过-v命令指定本地配置文件。后者不用更改程序,前者还是需要用到环境变量的(我以前的程序基本不用环境变量)。
希望以后能有.net core程序在docker中实践的机会吧

使用Docker部署ASP.NET Core应用程序实践

原文地址:https://www.cnblogs.com/yotsuki/p/8290285.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved