webapi通过docker部署到Linux的两种方式

docker

安装官网

  1. 删除docker

     sudo  yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine
    
  2. 安装

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. 查看是否安装成功

    sudo systemctl start docker
    sudo docker run hello-world
    
  4. 查看docker状态

    systemctl status docker
    
  5. 设置开机自启

    sudo systemctl enable docker
    
  6. 禁止开机自启

    sudo systemctl disable docker
    

二、创建镜像容器(镜像可以理解成类,容器可以理解成类的实例化)

  1. 源代码创建

    1. 创建WebApi项目

    2. 选择将 解决方案 和 **项目 ** 放到同一个目录下,点击下一步

    3. 选择启用Docker,点击创建

    4. 将源文件直接复制到服务器,然后进入 进入到解决方案目录下开始创建镜像

    5. 创建镜像

      例子:docker -t 名称:版本号 .
      docker -t dockerapi:1.0.0 .
      
    6. 启动容器

      例子:docker run --name 名称 -itd --restart unless-stopped -p 外部访问端口:项目启动端口 启动镜像
      docker run --name docker1.0.0 -it --restart unless-stopped -p 8888:8080 dockerapi:1.0.0
      
    7. 浏览器访问

      服务器ip:8888/swagger/weatherforecast
      
  2. 发布之后文件创建

    1. 创建好webapi项目

    2. 修改配置文件,配置端口(appsettings.json

      {
        "Logging": {
          "LogLevel": {
            "Default": "Information",
            "Microsoft.AspNetCore": "Warning"
          }
        },
        "AllowedHosts": "*",
        "Kestrel": {
          "Endpoints": {
            "Http": {"Url": "http://*:8060"}
          }
        }
      }
      
      
    3. 点击发布

    4. 进入发布后的文件夹

    5. 创建dockerfile配置文件,将下边内容复制到文件中,并修改配置(Dockerfile)

      #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
      
      FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
      USER app
      WORKDIR /app
      #端口
      EXPOSE 8060
      
      FROM base AS final
      WORKDIR /app
      COPY . /app
      #启动命令(括号中为启动的项目名称)
      ENTRYPOINT ["./LinuxApi"]
      
    6. 将发布后的文件上传到服务器

    7. 创建镜像

      例子:docker -t 名称:版本号 .
      docker -t linuxapi:1.0.0 .
      
    8. 创建容器

      例子:docker run --name 名称 -itd --restart unless-stopped -p 外部访问端口:项目启动端口 启动镜像
      docker run --name linuxapi1.0.0 -it --restart unless-stopped -p 7777:8060 linuxapi:1.0.0
      
    9. 浏览器访问

      服务器ip:7777/swagger/weatherforecas
      

三、其他命令

  1. 镜像

    1. 创建

      例子:docker -t 名称:版本号 .
      docker -t linuxapi:1.0.0 .
      
    2. 删除

      例子:docker rmi 名称:版本号
      docker rmi linuxapi:1.0.0
      
  2. 容器

    1. 创建

      例子:docker run --name 名称 -itd --restart 重启规则 -p 外部访问端口:项目启动端口 启动镜像
      docker run --name linuxapi1.0.0 -it --restart unless-stopped -p 7777:8060 linuxapi:1.0.0
      
    2. 启动和停止

      docker start linuxapi1.0.0
      docker stop linuxapi1.0.0
      
    3. 查看容器

      运行中
      docker ps
      全部
      docker ps -a
      
    4. 删除

      例子:docker remove 容器id或者容器名称
      docker remove linuxapi1.0.0
      
    5. 修改容器 启动规则(服务挂了之后是否重启)

      docker update --restart=always [container_name_or_id]
      1. `no`: 容器不会在Docker守护进程启动时自动启动(默认)。
      2. `on-failure`: 容器只有在非正常退出时(退出状态非0)才会重启。
      3. `always`: 无论退出状态如何,容器总是重新启动。
      4. `unless-stopped`: 在容器退出时,如果容器是由Docker守护进程停止的,就不会重新启动。
      
      docker update --restart=always linuxapi1.0.0
      
posted @ 2024-03-18 22:47  潜龙-勿用  阅读(195)  评论(0编辑  收藏  举报