<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          銀河麒麟V10使用Docker方式部署應(yīng)用

          共 6323字,需瀏覽 13分鐘

           ·

          2024-04-16 08:05

          現(xiàn)在越來越多的企業(yè)級應(yīng)用需要運行在國產(chǎn)化環(huán)境中,而銀河麒麟 V10 是目前我碰到的最常用的服務(wù)器,在銀河麒麟上部署應(yīng)用有兩種方式:使用二進制文件編譯部署和使用 Docker 。

          關(guān)于使用二進制文件的方式,在《銀河麒麟系統(tǒng)安裝中間件》中有相關(guān)介紹。如果客戶允許使用 Docker,那可以更方便、快速進行部署了。

          本文將介紹使用 Docker 的方式在銀河麒麟 V10 服務(wù)器進行應(yīng)用的部署。

          可以使用下面命令查看服務(wù)器環(huán)境:

          uname -a
          hostnamectl

          需要安裝的組件

          1、服務(wù)器已經(jīng)安裝 Docker ,還需要安裝 docker-compose

          2、中間件包括 Nginx、Redis、Mysql、Rabbitmq、MongoDB

          3、.NET 8 的相關(guān)處理

          docker-compose

          在下面地址下載相應(yīng)的安裝包:

          https://github.com/docker/compose/releases

          將安裝包放到服務(wù)器 /root 目錄,然后執(zhí)行下面命令進行安裝:

          cp docker-compose-linux-aarch64  /usr/local/bin/docker-compose
          sudo chmod +x /usr/local/bin/docker-compose

          安裝完后,執(zhí)行 docker-compose -v 查看版本號,能正常顯示說明安裝成功。

          Redis、MySql、RabbitMQ

          根據(jù)驗證發(fā)現(xiàn)中間件的 Docker 鏡像有的可以直接拉取就可以,有的需要使用 arm64 版本的鏡像,比如:

          • Redis、MySql、RabbitMQ 可以直接拉取
          • MongoDB、Nginx 需要用 arm64 版本

          Redis、MySql、RabbitMQ 在 docker-compose.yml 文件中的配置如下:

           s2mysql:
            restart: always
            image: mysql:8.0
            ports:
              - "13306:3306"
            environment:
              - TZ=Asia/Shanghai
              - MYSQL_ROOT_PASSWORD=xxxxxx
            volumes:
              - ./config/mysql:/docker-entrypoint-initdb.d/
            command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --default-authentication-plugin=mysql_native_password
            networks:
             s2_net:
              ipv4_address: 172.66.9.2
              
           s2redis:
            restart: always
            image: redis:6.2.14
            environment:
              - TZ=Asia/Shanghai
            volumes:
              - ./config/redis/redis.conf:/etc/redis/redis.conf
            command: redis-server /etc/redis/redis.conf
            networks:
             s2_net:
              ipv4_address: 172.66.9.9

           s2mq:
            restart: always
            image: rabbitmq:3.8.2-management
            environment:
              - TZ=Asia/Shanghai
            networks:
             s2_net:
              ipv4_address: 172.66.9.8

          奇怪的是,這些中間件的鏡像中都有提供 arm 的版本,拿 Redis 來說,如下圖:

          可能直接使用 docker pull redis:6.2.14 拉取到的鏡像是兼容版本,因為看鏡像大小,直接拉取的又 146MB ,特定版本只有幾十MB 。

          MongoDB、Nginx

          Nginx

          以 Nginx 為例來看如何進行特定版本的拉取。

          1、訪問 https://hub.docker.com/_/nginx/tags?page=&page_size=&ordering=&name=1.25.4 ,進入到 Nginx 的 1.25.4 版本的頁面。

          2、點擊前面的鏈接進入詳細頁面。

          3、復(fù)制 index digest ,拼接到 docker pull 的后面,最終的拉取鏡像的命令如下:

          docker pull nginx:1.25.4@sha256:b72dad1d013c5e4c4fb817f884aa163287bf147482562f12c56368ca1c2a3705

          4、拉取下來的鏡像是沒有 tag 的。

          可以使用 docker tag 命令進行 tag 設(shè)置或直接使用鏡像 ID ,前端構(gòu)建的 Dockerfile 文件內(nèi)容如下:

          FROM 070027a3cbe0
          COPY . /usr/share/nginx/html/
          EXPOSE 80
          CMD ["nginx""-g""daemon off;"]

          MongoDB

          1、拉取特定版本鏡像的方式和上面 Nginx 一樣。

          2、需要主要的是在銀河麒麟V10 系統(tǒng)中,對 MongoDB 的版本是有要求的 ,一開始使用 MongoDB 5.0 鏡像,容器運行失敗,錯誤日志如下:

          WARNING: MongoDB requires ARMv8.2-A or higher, and your current system does not appear to implement any of the common features for that! applies to all versions ≥5.0, any of 4.4 ≥4.4.19 see https://jira.mongodb.org/browse/SERVER-71772 see https://jira.mongodb.org/browse/SERVER-55178 see also https://en.wikichip.org/wiki/arm/armv8#ARMv8_Extensions_and_Processor_Features see also https://github.com/docker-library/mongo/issues/485#issuecomment-970864306

          上面的意思指的是不能使用大于等于 5.0 的版本,如果是使用版本 4 ,不能大于 4.4.19 。

          3、最后拉取了 4.2.24 ,終于運行成功了。

          docker pull mongo:4.2.24@sha256:699d652ed67423d689258bad7b316cf005dfbb82b334118ec306f049042f3717

          4、MongoDB 的 docker-compose.yml 配置如下:

           mongo:
            restart: always
            image: 97e328c342e0
            environment: 
              - TZ=Asia/Shanghai
            networks:
             s2_net:
              ipv4_address: 172.66.9.7

          .NET 8

          正常情況下,拉取 .NET 8 對應(yīng)的鏡像用來做應(yīng)用的基礎(chǔ)鏡像即可。.NET 8 的鏡像地址如下:

          https://hub.docker.com/_/microsoft-dotnet-aspnet/

          通過上圖可以發(fā)現(xiàn),.NET 6 和 .NET 7 都有支持 Debian 11 的版本,但 .NET 8 只有 Debian 12。銀河麒麟 V10 的內(nèi)核是 Debian 11 ,而你恰巧又用的是  .NET 8 ,那暫時還沒有辦法使用 Docker 的方式部署,只能直接在服務(wù)器上安裝 .NET 8 環(huán)境。

          1、安裝依賴

          yum install gmp-devel mpfr-devel libmpc-devel -y

          2、執(zhí)行下面命令安裝

          wget https://download.visualstudio.microsoft.com/download/pr/1e449990-2934-47ee-97fb-b78f0e587c98/1c92c33593932f7a86efa5aff18960ed/dotnet-sdk-8.0.204-linux-arm64.tar.gz

          mkdir -p /opt/dotnet
          tar -zxvf dotnet-sdk-8.0.204-linux-arm64.tar.gz -C /opt/dotnet

          ln -s /opt/dotnet/dotnet /usr/bin
          export DOTNET_ROOT=/opt/dotnet
          export PATH=$PATH:/opt/dotnet

          3、執(zhí)行命令  dotnet --info 進行驗證,出現(xiàn)下面結(jié)果表示安裝成功:

          .NET SDK:
           Version:           8.0.204
           Commit:            c338c7548c
           Workload version:  8.0.200-manifests.9f663350

          運行時環(huán)境:
           OS Name:     kylin
           OS Version:  V10
           OS Platform: Linux
           RID:         linux-arm64
           Base Path:   /opt/dotnet/sdk/8.0.204/

          已安裝 .NET 工作負載:
          沒有要顯示的已安裝工作負載。

          Host:
            Version:      8.0.4
            Architecture: arm64
            Commit:       2d7eea2529

          .NET SDKs installed:
            8.0.204 [/opt/dotnet/sdk]

          .NET runtimes installed:
            Microsoft.AspNetCore.App 8.0.4 [/opt/dotnet/shared/Microsoft.AspNetCore.App]
            Microsoft.NETCore.App 8.0.4 [/opt/dotnet/shared/Microsoft.NETCore.App]

          Other architectures found:
            None

          Environment variables:
            Not set

          global.json file:
            Not found

          Learn more:
            https://aka.ms/dotnet/info

          Download .NET:
            https://aka.ms/dotnet/download


          瀏覽 91
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色一级A片 | 久草资源在线 | 欧美美女日逼 | 一本道精品在线 | 国产亚洲精品久久久久动 |