dotnetcore 國產化,Docker筆記01-發布一個dotnetcore應用

 2023-12-06 阅读 16 评论 0

摘要:Docker筆記01-發布一個dotnetcore應用 原文:Docker筆記01-發布一個dotnetcore應用OS:Widows 10 IDE: VS2017 Docker:Docker Desktop for Windows Windows下安裝Docker需要先啟用Hyper-v? dotnetcore 國產化?在Windows 容器的運行目錄在C盤這個改不了,但是可以改image的保存路
Docker筆記01-發布一個dotnetcore應用
原文:Docker筆記01-發布一個dotnetcore應用

OS:Widows 10

IDE: VS2017

Docker:Docker Desktop for Windows

Windows下安裝Docker需要先啟用Hyper-v?

dotnetcore 國產化?在Windows 容器的運行目錄在C盤這個改不了,但是可以改image的保存路徑?

Desktop 右鍵 > Settings > Daemon > 點擊 Basic > 輸入  "graph": "D:\\docker\\images"

?本地環境搭好后開始準備項目制作鏡像

1.新建項目時添加Docker支持或者在現有項目上右鍵添加Docker支持

2.將生成的Dockerfile復制到解決方案目錄下 *****貌似如果需要用命令行Build鏡像就必須手動復制到解決方案目錄下,應該算是vs的bug****

? ?VS自動生成的一個Dockerfile 紅色部分是后加的說明

dotnetcore如何開發安卓??

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat# 這是一個運行時的基礎鏡像,表示這個api依賴這個runtime,別名是base 工作目錄是/app 運行端口是 80 #
FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80# 這是dotnet的sdk鏡像,也是一個基礎鏡像 別名 build 構建鏡像的過程中需要使用各種dotnet的命令,所以也是必不可少的 #
FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["HelloApi/HelloApi.csproj", "HelloApi/"]      # 把HelloApi/HelloApi.csproj 復制到 HelloApi/ 下 #
RUN dotnet restore "HelloApi/HelloApi.csproj"       # 運行 dotnet 的 restore 命令 # 
COPY . .                                            # 把當前目錄下文件復制到運行目錄#
WORKDIR "/src/HelloApi"
RUN dotnet build "HelloApi.csproj" -c Release -o /app  # 運行dotnet的build命令 打包成Release 輸出目錄是 /app #FROM build AS publish
RUN dotnet publish "HelloApi.csproj" -c Release -o /app  #發布命令#FROM base AS final
WORKDIR /app
COPY --from=publish /app .                         
ENTRYPOINT ["dotnet", "HelloApi.dll"]      # 程序入口 使用dotnet命令啟動HelloApi.dll文件 #

?

?

3.打開cmd命令行工具進入到Dockerfile目錄(也可以不進入,但是需要輸入Dockerfile文件的路徑)?

docker build -t erp/myapi:1.0 .
# -t 表示給鏡像起名字 格式是 name:version 如果不加上版本號 會默認成 laster
# . 表示當前目錄 也可是完整路徑

?

4.查看docker鏡像

docker images

docker hadoop?5.運行一個鏡像(鏡像跑起來就是容器了)

# 基于鏡像erp/myapi:1.0運行一個名為api的容器 
# -d 后臺運行 -it 控制臺運行
# -p 端口映射 容器80端口映射到宿主機8080端口上  -P 端口動態映射 每次啟動容器時端口隨機
# --log-driver 容器日志收集方式json文本
# --log-opt max-size 容器日志單文件大小上線 max-file 最多保存多少個日志文件
# -v volume數據卷 表示把宿主機目錄和容器目錄做映射,通常是將容器中的應用日志映射到宿主機上,容器中的數據庫文件映射到宿主機 避免刪除容器時數據庫等也被刪除
# sh 控制臺啟動后可使用sh功能 windows環境下 是cmd
docker run -d -p 8080:80 --log-driver=json-file --log-opt max-size=1k --log-opt max-file=5 -v /data/logs:/app/App_Data/Logs --name api erp/myapi:1.0  
docker run -it -P --name box busybox sh其他常用參數 -e 環境變量  如 -e ASPNETCORE_ENVIRONMENT=release 項目運行環境是release 可使用多次

?

 

6.查看所有容器

# -a 表示查看所有容器 不加-a表示查看所有運行中的容器
docker ps -a

 

7.查看指定容器的詳細信息

docker inspect  <容器名稱 or 容器ID>

dotnetcore入門。8.進入一個運行的容器內

docker exec -it <容器名稱 or 容器ID> sh
docker exec -it <容器名稱 or 容器ID>  /bin/basheg: docker exec -it api /bin/bash
退出 ctrl + p ,q 或者輸入 exit

   

這樣在docker中運行一個dnc項目就算是完成了  

遇到的一些問題:  

1.運行時沒有設置環境變量,dotnetcore沒有按預期加載appsettings.{xxx}.json文件,導致數據庫連接不通

2.Desktop 默認在Hyper-v中虛擬的是Linux內核 可以Desktop右鍵? 點擊Switch to Windows/Linux containers 去切換環境  

dotnet core game。? ?在Linux內核中運行web項目,資源文件路徑大小寫敏感

3.路徑問題 項目中不要使用? + "\\" 等來拼接路徑 通常建議使用Path.Combine()

?

下一篇 docker + elk 搭建日志平臺??

https://www.cnblogs.com/dbycl/p/10876373.html

posted on 2019-05-16 22:42 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/10878564.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/190543.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息