ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.NET项目部署到Docker容器

2021-12-10 16:35:04  阅读:161  来源: 互联网

标签:容器 com app id base dotnet NET Docker docker


1、修改端口

public static IWebHostBuilder CreateHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseUrls("http://*:8080", "http://*:80")
            .UseStartup<Startup>();

2、添加Dockerfile文件

image-20211209210944787

3、VS根据项目自动生成了Dockerfile模板。稍微修改下

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 8080

FROM base AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WeTodo.API.dll"]

注意EXPOSE 后面的端口号要与Program中CreateHostBuilder方法设置的保存一致

Tips:该方式构建容器可能体积会比较大,建议分段构建

FROM mcr.microsoft.com/dotnet/aspnet:$version AS base
WORKDIR /app
EXPOSE 5000
ENV ASPNETCORE_URLS=http://+:5000
ENV TZ=Asia/Shanghai

FROM mcr.microsoft.com/dotnet/sdk:$version AS publish
WORKDIR /src
COPY ./ ./
RUN dotnet publish $project -c Release -o /app

FROM base AS final
COPY --from=publish /app /app
ENTRYPOINT ["dotnet", "$project.dll"]

4、根据自身情况选择发布位置,这里以文件夹为例

image-20211209212054268

5、点击显示所有设置进行一些配置

image-20211209212243557

Tips:该项目使用的SQLite数据库,所以不需要安装另外的数据库环境,如果是Mysql等,需要额外在服务器装一下,可以参考https://luchong.gitbook.io/note/bu-shu-xiang-mu-dao-docker

6、点击发布,等待VS编译完成

image-20211209212435835

7、将发布文件Copy到系统中的指定目录(也可以在VS发布时选择FTP一步到位)

image-20211210111221190

8、安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

image-20211210112534208

9、构建镜像

docker build -t wetodo/api:1.0 --rm .

wetodo/api:1.0 这一段表示 镜像名称:Tag

第一次构建可能会有点慢

image-20211210112032941

10、创建并启动镜像

docker run -itd -d -p 8080:80 wetodo/api:1.0

image-20211210112145158

11、查看运行中的镜像

docker ps -a

image-20211210112202132

docker常用命令:

docker stop 容器id
 
docker start 容器id
 
docker restart 容器id

#删除images,通过image的id来指定删除谁
docker rmi <image id>

12、开放端口

关闭系统防火墙

//查看防火墙状态
systemctl status firewalld

//开启防火墙
systemctl start firewalld

//关闭防火墙
systemctl stop firewalld

如果是云服务器,还得在服务器面板上开放一下端口

image-20211210161157871

13、起飞

访问项目

image-20211210161242845

标签:容器,com,app,id,base,dotnet,NET,Docker,docker
来源: https://www.cnblogs.com/chonglu/p/15672478.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有