iT邦幫忙

2023 iThome 鐵人賽

DAY 28
1

前面已經透過 Docker Buildx 建立了 Image,並且把 Image 上傳到 Docker Hub,接下來就可以開始部署到 DigitalOcean 上了。

建立 Droplet

先到 DigitalOcean 註冊一個帳號,然後點選右上角的 Create,選擇 Droplets

然後選擇主機所在地,這邊選擇 Singapore,因為離台灣比較近。

選擇 OS

接下來選擇 OS,這邊選擇 Ubuntu 20.04 (LTS) x64

選擇規格

選擇規格的部分就看自己的需求,我選擇最便宜的,有 512MB 記憶體,1 CPU,10GB SSD 硬碟空間,非常夠用了。

選擇加密金鑰

沒有金鑰的話,這邊選擇 New SSH Key,然後按照說明新增金鑰,有的話就直接勾選。

最後選擇 Create Droplet,就會開始建立 Droplet。

建立成功就可以看到這個畫面,拿到左上角的 IP 然後就可以開始部署了。

進入 Droplet 與設定

  • 在 Terminal 輸入以下指令,進入 Droplet。
$ ssh root@<ip>
  • 安裝數個必要的套件,以便於之後的操作。下面是這些套件的功能說明:
$ apt install apt-transport-https ca-certificates curl software-properties-common -y
  1. apt-transport-https:
    這個套件允許 APT(Advanced Package Tool,Ubuntu 和 Debian 系統的套件管理器)通過 HTTPS 協議來檢索和安裝套件。這是一個安全的協議,可以保護在網絡上傳輸的資料。

  2. ca-certificates:
    這個套件包含了一系列公開的 CA(Certificate Authorities,證書授權中心)根證書。這些證書是用來驗證 SSL/TLS 連線的,也就是說,它們可以幫助系統識別和信任那些由這些證書授權中心簽署的其他證書。

  3. curl:
    curl 是一個很實用的命令列工具,用於從或向伺服器傳輸資料。它支援許多協議,包括 HTTP、HTTPS、FTP 等。在這個情境中,它被用來從 Docker 的伺服器下載 GPG key。

  4. software-properties-common:
    這個套件提供了一些腳本和工具,以便管理軟體來源和 PPA(Personal Package Archives,個人套件檔案庫)。在這個指令中,它提供了 add-apt-repository 命令,該命令用於增加新的套件來源。

最後的 -y 參數是自動答覆安裝過程中的提示,表示對所有提示都自動回覆“是”,這樣安裝過程就不會中斷。

  • 加入 Docker 官方 GPG key 並設置 Docker repository:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 安裝 Docker:
$ apt update
$ apt install docker-ce -y
  • 啟動 Docker 並設置開機啟動:
$ systemctl start docker
$ systemctl enable docker

登入 Docker Hub

$ docker login

把建立的 Image 拉下來

$ docker pull username/image-name:tag

執行 Image

$ docker run -p 8080:8080 username/image-name:tag

最後就可以在 Postman 測試一下,例如:

測試地址 QR code 的問題

在測試使用地址產生 QR code 時會發現沒辦法正常回應,這是因為我們把 API Key 放在 .env 裡面,所以在呼叫 API 時,沒辦法拿到正確的 API Key。

最簡單的方式是直接在 docker run 時,把 API Key 帶進去,例如:

docker run \
-e GOOGLE_MAPS_API_KEY=your-maps-api-key-here \
-e GOOGLE_OAUTH_CLIENT_ID=your-client-id-here \
-e GOOGLE_OAUTH_CLIENT_KEY=your-client-key-here \
-p 8080:8080 username/image-name:tag

這樣就解決了。

本篇文章介紹了如何將 Rust 後端部署到 DigitalOcean 上,下一篇文章將會介紹後端部署的另一個方式,如何使用 AWS EC2 來部署。


上一篇
Day 27 - 使用 Docker Buildx 建立 Image 並且上傳到 Docker Hub
下一篇
Day 29 - 部署到 AWS EC2
系列文
30 天用 Rust 打造 QR Code 製造機30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言