2023年2月3日

TortoiseGit 以 SSH 連結 GitLab

TortoiseGit 以 SSH 連結 GitLab

使用 TortoiseGit 以 SSH 連結 GitLab,因 RSA private key 格式不同,而有兩種方式。

TortoiseGit 所使用的 SSH Client 預設為 TortoiseGitPlink.exe,必須搭配其 PuTTYgen 所產出的 .ppk 檔案。

若要使用 OpenSSH 則需要變更 SSH Client 的設定。

使用 PuTTYGen

建立 RSA Public/Private Key

安裝 TortoiseGit 後,PuTTYgen 也會同時存在 C:\Program Files\Git\usr\bin 的目錄下。在 Windows 搜尋 PuTTYGen 便可以找到此程式。

開啟 PuTTYgen 程式,選擇 RSA (預設),並點選 generate 按鍵後,不斷移動滑鼠,便可建立 public/private key pair。
PuTTYgen generate

Public key 會直接呈現在 PuTTY Key Generator 的畫面上,可用來複製到 GitLab 中,而 private key 則可點選 Save private key 按鍵,存放在指定的目錄下,以便提供給 TortoiseGit 使用。

PuTTYgen key pair

將 Public Key 複製到 GitLab

點選 GitLab 右上角 icon,進入 Preferences 畫面。選擇 SSH Keys 功能,將 public key 複製到 Key 的 textbox 中。

gitlab ssh

TortoiseGit 指定 Private Key

開啟 TortoiseGit Settings,點選左側樹狀 Git 選項,再點選 Edit global.gitconfig 按鍵,開啟編輯視窗。

Tortoise Setting SSH

參考下列範例,設定 puttykeyfile 指向 RSA private key 所存放的位置:

[user]
	name = your-name
	email = your-name@domain-name.com
[remote "origin"]
	puttykeyfile = c:\\ssh\\private-key.ppk

透過 SSH Clone 原始碼

首先進入 GitLab 網站,選擇專案,如下圖示,點選 Clone 並複製 Clone with SSH 裡的內容:
gitlab clone by ssh

以檔案總管建立專案目錄,並以 Tortoise 的 Clone 功能,確定 Load Putty Key 指到 RSA private 所在位置,按下 OK 便可完成作業:
tortoise clone by ssh

使用 OpenSSH

另一個方法是採用 OpenSSH 來建立 RSA Key Pair。首先透過 PowerShell 以下列指令來建立:

ssh-keygen -o -t rsa -C "your@email.com"

上列指令所使用的參數說明如下表:

參數 說明
-o 使用 open ssh 演算法
-t rsa 採用 rsa
-C “…” 加入註解

執行 ssh-keygen 之後,將於c:\Users\<user-name>\.ssh 目錄中產出 id_rsa 與 id_rsa.pub 兩個文字檔案。其中 id_rsa 存放 RSA private key,而 id_rsa.pub 存放的是 RSA public key。

產出 RSA key pair 後,先將 id_rsa.pub 內容 (public Key) 複製到 GitLab 的 SSH Key 中。您可以嘗試直接在 PowerShell 下 git clone 指令,將原始碼複製到本機:

git clone git@gitlab.com:microsystex/date-calculator.git

如果要使用 TortoiseGit 的 Clone 功能,則需要修改 SSH client。如下圖所示,開啟 TortoiseGit Settings,點選 Network,將 SSH client 由預設的 C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe 改為C:\Program Files\Git\bin\sh.exe

Tortoise SSH client

如此,便能以 OpenSSH 作為 TortoiseGit 與 GitLab 的連線安全機制了。


參考資料:


2023年2月1日

建立 Docker Image

建立 Docker Image

本文以下列情境進行說明:由 Docker Registry (Container Registry) 取得 Nginx Image、執行 Container 並添加檔案或程式、退到背景與檢查執行狀態、打包新的 Image、最後上傳至 Docker Registry。

使用 Nginx 為 Web APP 為範例

  1. 取得官方所提供之 nginx image

    docker pull nginx
    
  2. 啟動 nginx 成為 web server

    docker run -d -p 8080:80 --name webserver nginx
    
    參數 說明
    -d 同於 --detach,是將 container 以背景方式執行
    -p 將本機 port 對應到 container 中的 port
    –name 指定容器名稱
    nginx 為 docker image 名稱

    執行後,在瀏覽器輸入 localhost:8080,便可以看到 Welcome to nginx! 網頁

  3. 停止、啟動、重啟 container

    docker stop webserver
    docker start webserver
    docker restart webserver
    
  4. 進入 container shll Section
    首先確定 container 在執行狀態,輸入下列指令,可以進入 shell 環境

    docker exec -it webserver sh
    
    說明
    i 同於 --interactive,保持 STDIN 互動模式
    t 同於 --tty,為 pseudo-tty,進入終端機模式,通常與 -i 同時使用,可直接輸入 -it

    Nginx 預設首頁位於 /usr/share/nginx/html/index.html,可以使用下列指令來確認:

    # cat /usr/share/nginx/html/index.html
    

    在 bash 命令下,可以輸入 exit 離開 terminal,回到 PowerShell。

  5. 複製檔案取代預設網頁
    簡單撰寫一個 Hello World 的 HTML

    <!DOCTYPE  html>
    <html>
    <head>
    	<title>Hello World Sample</title>
    </head>
    <body>
    	Hello World!
    </body>
    </html>
    

    透過 docker cp 將檔案覆蓋 container 的首頁

    docker cp ./index.html webserver:/usr/share/nginx/html
    

    在瀏覽器輸入 localhost:8080,便可以看到首頁已更新。

  6. 建立新的 image name
    使用 docker commit 將 container 儲存為新的 image。

    docker commit webserver <docker_hub_account>/hello_world_nginx:1.0
    
  7. 停止並刪除 container
    接下來停止目前執行中的 container,並刪除

    docker stop webserver
    docker rm webserver
    
  8. 測試新建立的 docker image
    執行新建立的 docker image,並以瀏覽器測試 localhost:8080

    docker run -d -p 8080:80 \
      --name webserver \
      <docker_hub_account> \
      /hello_world_nginx:1.0
    
  9. 登入 docker hub 並將新的 docker image 上傳
    首先登入 docker hub

    docker login
    

    接下來便可以上傳至 docker hub

    docker push <docker_hub_account> \
      /hello_world_nginx:1.0
    

    完成後,便可以在 docker hub 網頁中,看到新增的 docker image。


參考資料:
Docker 指令小抄
How to Create a Docker Image From a Container


預設 Docker Desktop Volume 對應本機目錄

預設 Docker Desktop Volume 對應本機目錄

在 Windows 上使用 Docker Desktop 並採用 WSL 2 back-end 時,若未指定 volume 對應(mount)的目錄,其預設位置為: \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes,可以利用檔案總管輸入此路徑來查看。
另外,檔案路徑也可以使用下列格式來輸入: \\wsl.localhost\docker-desktop\mnt\host\wsl\docker-desktop-data\version-pack-data\community\docker\volumes\

參考資料:
where docker image is stored with docker-desktop for windows?

Deploying Vue & .NET with Google OAuth on GCP Cloud Run

Deploying Vue & .NET with Google OAuth on GCP Cloud Run Deploying Vue & .NET with Google OAuth on GCP Cloud Run...