2025/01/30

[AI] 如何在本地機器使用 DeepSeek-R1 模型

前言

AI 話題這幾年一直話題不斷,而前一陣子 DeepSeek 的聲量突然上升了不少,好像不研究一下不行。

今天就花了些時間,研究如何在本地執行 DeepSeek-R1 模型。

安裝步驟

  1. 安裝 Ollama
  2. 使用 DeepSeek-R1 模型
  3. 執行 Open-WebUI

2025/01/26

[ASP.NET Core] 如何在 ASP.NET Core 專案中的 Dockerfile 設定預設時區

問題

在開發 ASP.NET Core 專案時,Docker Image 預設的時區是 UTC,可以把時區預設定在 Asia/Taipei 嗎?

環境

  • Windows 11
  • Visual Studio 2022 (v17.12.4)
  • ASP.NET Core (.NET 8)

解決方法

在 Dockerfile 的 base 上加一段 ENV TZ=Asia/Taipei

(有試過加在 final 上,但是在 Visual Studio 開發時並不會正確載入,發佈到 Azure Web App for Containers 確認是有正確載入時區的)

而且 Image 要選 dotnet/aspnet:8.0 不要選 dotnet/aspnet:8.0-jammy-chiseled (不能因為佔空間才選它,它是不包含 tzdata 套件的)

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
ENV TZ=Asia/Taipei     # 加 TZ 這一個變數
EXPOSE 8080
EXPOSE 8081

...

若是不想要變更 Dockerfile 的設定,在 Visual Studio 開發,可以修改 launchSettings.json 檔案

在 Dockerfile 的 environmentVariables 加上 TZ 的參數

執行 docker run 的命令會帶入 TZ 的環境變數值

2025/01/24

[Azure] ASP.NET Core 專案部署到 Web App for Containers 問題除錯心得

前言

因為新專案要求要用 Docker,本地開發端的問題通常不大,開專案也都有 Template,往往都是實際要部署上線時會遇到一些狀況。

趁著記憶猶新,整理一下部署心得

開發環境

  • Windows 11
  • Docker Desktop v4.37.1
  • Visual Studio 2022 (v17.11.x -- 原版本忘了,因部署 Bug 問題,後來升級到 v17.12.4)
  • ASP.NET Core Web App (Model-View-Controller) 專案
  • .NET 8.0

選擇部署到 Azure 的服務

將專案部署到 Azure 上,我選擇的服務如下:

  • Azure Container Registry (ACR)
  • Azure App Service (Web App for Containers)
  • Azure SQL Database
  • Azure Storage

2025/01/23

[ASP.NET Core] 解決 ASP.NET Core 在 Linux Container 出現無法載入 libSkiaSharp 相依性問題

前言

一直以來開發的 ASP.NET Core 專案都是在 Windows 環境執行。最近才開始接觸開發 ASP.NET Core 專案執行於 Docker Container 的開發環境,馬上就遇到處理圖片的問題。

在 Windows 的環境下處理圖片會用到 System.Drawing.Common,但在 Linux 環境下是不支援的。所以在 Linux 下的圖片處理改採用 SkiaSharp 的套件。

SkiaSharp 這個套件在 Windows 及 Linux 都可以用,在 Windows 的開發環境已有測試套過可以正常運作,沒想到在 Linux 環境下還是噴錯了。

環境

  • Docker Container (預設 ASP.NET Core 專案用的 base 我改用 aspnet:8.0-jammy-chiseled 可減少 image size)
  • .NET 8.0
  • NuGet 安裝套件: SkiaSharp 版本 3.116.1

問題

而在使用 SkiaSharp 處理圖片的過程中出現以下錯誤訊息:

An unhandled exception occurred while processing the request.
DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies.

解決方式

需要再安裝 SkiaSharp.NativeAssets.Linux.NoDependencies 套件

特此記錄一下,供未來翻查用

2025/01/10

[Docker] 解決 permission denied 的問題

問題

在 Ubuntu VM 安裝 Docker 後執行 docker info 遇到 permission denied 的問題

錯誤訊息:

ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/info": dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info

解決方法

參考連結: https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue

指令步驟:

  1. 建立 docker 群組 (若不存在的話)
  2. 加入自己的帳號至 docker 群組
  3. 以群組 docker 的身份登入 (無需登出再登入)
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker