.NET项目部署到Docker容器

1、修改端口

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

2、添加Dockerfile文件

.NET项目部署到Docker容器

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、根据自身情况选择发布位置,这里以文件夹为例

.NET项目部署到Docker容器

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

.NET项目部署到Docker容器

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

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

.NET项目部署到Docker容器

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

.NET项目部署到Docker容器

8、安装docker

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

.NET项目部署到Docker容器

9、构建镜像

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

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

第一次构建可能会有点慢

.NET项目部署到Docker容器

10、创建并启动镜像

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

.NET项目部署到Docker容器

11、查看运行中的镜像

docker ps -a

.NET项目部署到Docker容器

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

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

.NET项目部署到Docker容器

13、起飞

访问项目

.NET项目部署到Docker容器

上一篇:C++ 文件读写操作std::ofstream和std::ifstream


下一篇:Linux 驱动开发 五:Linux LED驱动开发