webapi透過docker部署到Linux的兩種方式

潜龙-勿用發表於2024-03-18

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 remove 容器id或者容器名稱
      docker remove linuxapi1.0.0
      
    4. 修改容器 啟動規則(服務掛了之後是否重啟)

      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
      

相關文章