.net 5 發布到 docker 或 docker 鏡像方法


一、非源碼方式發布:將發布后的項目文件+dockerfile文件一起上傳后,運行docker創建命令,即可。

在visual studio 中進行web項目發布,並上傳文件到服務器

      

創建Dockerfile文件內容如下:

復制代碼
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
WORKDIR /app
EXPOSE 80
EXPOSE 443


WORKDIR /app
COPY .  /app
ENTRYPOINT ["dotnet", "web.dll"]
復制代碼

 

如果缺少gdilibplus使用下面的,添加了RUN

#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-buster-slim AS base
WORKDIR /app

RUN apt-get update && \
    apt-get install -y libgdiplus && \
    cd /usr/lib && \
    ln -s libgdiplus.so gdiplus.dll

EXPOSE 80
EXPOSE 443

WORKDIR /app
COPY .  /app
ENTRYPOINT ["dotnet", "TFCMS.dll"]

 

 

 

dockerfile注解

 

 

把此文件跟放到發布目錄,然后執行:

docker build -t tfcms .

注意:上面的命令,在鏡像名后還有一個空格加點的,這個不能少" ."

 

然后把鏡像掛載到docker中 如:

docker run --name tfcms -d -p 5001:80 -p 5002:443
  • -d ,表示在后台以守護態(daemonized)形式運行容器

  • -p 外部端口與內部容器端口映射。

  • --name 指定容器的名稱。當然可以不指定,默認會為我們創建

  • 最后一個參數 tfcms 就是我們剛創建的鏡像名稱

或者 docker run -d -p 5001:80 -p 5002:443 -v /root/tfcms:/app --workdir /app mcr.microsoft.com/dotnet/aspnet dotnet /app/LinuxDockerNginx.dll

      -p:指定物理主機5001端口映射到docker容器80端口 

      -v:復制物理主機中的文件到docker容器中的指定目錄 

      --workdir:指定后續指令目錄

                   mcr.microsoft.com/dotnet/aspnet:指定對應的基礎鏡像  使用dotnet命令運行項目dll

如此即可發布完成。

運行項目 

運行項目

docker run -itd -p 5000:80 dockerpublish

-itd:交互式后台啟動

 

      

 

     -p:指定物理主機5001端口映射到docker容器80端口 

    dockerpublish:鏡像名稱

 

二、源碼鏡像制作

      2.1將源碼拷貝到Centos指定目錄下,並在源碼總文件夾的同級目錄下,復制Dockerfile文件

               

     2.2 進入到Dockerfile同級目錄,進行鏡像構建

     

 

    使用docker構建命令進行構建:docker build -t dockerpublish -f Dockerfile . 

    -t :鏡像名稱(必須小寫)  -f :Dockerfile文件 最后圓點指定dockfile文件 
    

 

三、將Docker 鏡像推送到阿里雲鏡像倉儲

 在阿里雲創建自己的容器倉庫 https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

 

按照阿里雲的提示進行鏡像推送。

先登錄,密碼為阿里雲的賬號密碼

推送鏡像,注意鏡像ID 和版本

這時候可以在阿里雲的鏡像版本看到自己的版本信息

這里推送到阿里雲的鏡像完成

在linux上獲取阿里雲自己的Docker鏡像

這時候的本地鏡像倉庫就存在阿里雲的版本的鏡像

在linux運行項目,多版本回滾

執行 命令

docker run --name test -d -p 8003:8003 registry.cn-hangzhou.aliyuncs.com/lijiqing/test:1.0.2

 

 

 

版本的回滾指的是,當發布新的鏡像之后 如果出現bug或者其他問題,可以將當前容器關閉,運行之前舊的鏡像

四、docker 常見命令

   docker run:docker run相當於執行了兩步操作:將鏡像放入容器中(docker create),然后將容器啟動,使之變成運行時容器(docker start)

   docker start :啟動已存在的鏡像

   docker  stop:停止鏡像

   docker  stop $(docker ps -q):停止所有鏡像

   docker images:docker中的所有鏡像

   docker ps -a :顯示容器列表 -a 顯示所有容器(默認顯示正在運行)

   docker pull:拉取鏡像   name:tag 指定版本,默認latest

   docker search:搜索的范圍是官方鏡像和所有個人公共鏡像

   docker rm :刪除容器

   docker rmi:刪除鏡像

   docker rm $(docker ps -aq):刪除所有停止的容器

        docker exec -it 容器ID /bin/bash :進入指定id的容器    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM