zoukankan      html  css  js  c++  java
  • docker部署net core项目

    安装环境:

      虚拟机cent os 7;

      docker;

      net 5.0 api项目

    部署步骤:

    •   net core API项目搭建

      创建项目时勾选docker支持选项或后续添加;

      此时生成的dockerfile文件内容(注:直接将代码放到docker里部署下面的自动生成的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 80
    EXPOSE 443
    
    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
    WORKDIR /src
    COPY ["TestAPI/TestAPI.csproj", "TestAPI/"]
    RUN dotnet restore "TestAPI/TestAPI.csproj"
    COPY . .
    WORKDIR "/src/TestAPI"
    RUN dotnet build "TestAPI.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "TestAPI.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "TestAPI.dll"]

      发布后部署时dockerfile改为

    FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base  
    WORKDIR /app  
    COPY . .  
    EXPOSE 80
    ENTRYPOINT ["dotnet", "TestAPI.dll"]

    •   Linux系统安装docker环境

      安装之前现卸载系统上原有的Docker

    yum remove docker 
    >                   docker-client 
    >                   docker-client-latest 
    >                   docker-common 
    >                   docker-latest 
    >                   docker-latest-logrotate 
    >                   docker-logrotate 
    >                   docker-engine

      安装需要的安装包yum-utils

    [root@instance-h9cwbr8m ~]# yum install -y yum-utils
    Loaded plugins: langpacks, versionlock
    Excluding 1 update due to versionlock (use "yum versionlock status" to show it)
    Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
    Nothing to do
    [root@instance-h9cwbr8m ~]# 

      设置镜像仓库地址

    yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo   ##此地址为官方的仓库地址,在国内建议不要用

      阿里云的镜像仓库地址

     yum-config-manager 
      --add-repo 
       http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

      安装docker相关的引擎

      先更新yum软件包索引

         yum makecache fase 

      docker社区、ee企业版 ce为社区版 官方推荐使用ce版,默认安装最新的docker
      版本,也可以指定版本安装

    yum install docker-ce docker-ce-cli containerd.io

      启动docker

    systemctl  start  docker

      使用docker version 查看dockers是否启动

    docker version

      使用hello-world镜像测试docker

    docker run hello-world

      以下为执行结果

     

     docker run运行思维导图

       查看本机存在那些docker镜像

    docker  images

       可以看到刚才在执行docker run hello-world的时候,已经将hello-world镜像拉去到本地镜像中了

      了解 卸载docker

    yum  remove docker-ce docker-ce-cli containerd.io

      删除资源

    rm -rf  /var/lib/docker 

      /var/lib/docker 为docker默认的工作路径!

    •    Linux下安装net5.0 SDK及Runtime

       安装5.0SDK

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    sudo yum install dotnet-sdk-5.0 -y

       安装5.0Runtime

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

      验证

    dotnet --info

     

    •   步入正轨开始将API项目部署到dockek

        准备工作:

          发布后的文件放置Linux系统文件夹内,如图(现在只关注发布后的文件,当然也可以直接部署源代码文件)

          这里需要注意一些坑:

          构建镜像

            在构造之前,先测试下当前dll是否有效

     

       如果提示dotnet命令不可使用,请参考请参考官网配置.net core sdk 安装
      查看版本,测试是否安装成功。

       访问正常,关闭网站,开始构建镜像:

        进入当前程序目录

    cd a/b  代表进入a文件夹里的b文件夹

         输入构建命令

    docker build -t test-demo .

         build 命令参数:

     -t  --指定镜像名称 (只能小写)
     .   --表示build上下文为当前目录,默认情况docker会使用上下文的根目录找到Dockerfile文件

         创建并启动容器

    [root@localhost publish]# docker run --name myfirstApi -d -p 5000:80 test-demo

        run命令参数:

     -d --表示在后台以守护态(daemonized)形式运行容器
     -p --外部端口与内部容器端口映射。
     --name 指定容器的名称。当然可以不指定,默认会为我们创建
     最后一个参数 test-demo 就是我们刚创建的镜像名称

        检查docker容器列表

    [root@localhost publish]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
    4064ae15311e        test-demo           "dotnet TestAPI.dll"   3 seconds ago       Up 3 seconds        0.0.0.0:5000->80/tcp   myfirstApi

        测试

         拓展:

          利用刚才相同的发布文件,继续生成一个不同端口号的服务

          命令重复以上步骤:

    进入发布文件的目录
     
    cd publish
    
    生成镜像(注意 . 不能丢)
    
     docker build -t publish-demo .
    
    启动容器
    
     docker run --name mysecondApi -d -p 5005:80 publish-demo

          结果

        遇到的坑:

    docker 安装报Error: moby-containerd conflicts with containerd.io-1.4.4-3.1.el7.x86_64
    curl https://packages.microsoft.com/config/rhel/7/prod.repo > ./microsoft-prod.repo
    sudo cp ./microsoft-prod.repo /etc/yum.repos.d/
    yum update -y

        可以解决。

    参考连接:

      centos7安装docker      https://blog.csdn.net/qq_26400011/article/details/113856681

      部署至docker  https://blog.csdn.net/shaojiayong/article/details/109029535

  • 相关阅读:
    关于在php+apache开发过程中使用svn进行版本的维护
    Fragment的切换动画实现
    IOS MJExtension json转模型的轻量级框架的使用
    Centos 配置Red5流媒体服务器
    在Centos 6.5 上面配置 SVN
    在Centos 上面配置Openfire
    关于阿里云上面的Centos上面配置 防火墙
    【Android 一些难以理解的控件、容易混淆的、多种实现方式的、一些该纠正的想法】
    【进攻移动开发_htm5_跨平台_的号角】
    【进攻Android的号角】
  • 原文地址:https://www.cnblogs.com/cxxtreasure/p/14909399.html
Copyright © 2011-2022 走看看