zoukankan      html  css  js  c++  java
  • .NET项目部署到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

  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/chonglu/p/15672478.html
Copyright © 2011-2022 走看看