上一篇實作【行事曆】微服務,本篇接續將應用程式佈署到虛擬容器(Container)。
微服務是輕量級的應用程式,沒必要弄一台大型Server安裝,通常會使用虛擬容器運行,一台Server可提供許多虛擬容器運行,如下圖:
圖一. 虛擬容器化(Containerization),圖片來源:【Docker Containers Are Everywhere】
要製作虛擬容器須先安裝Docker工具軟體,Windows可透過WSL安裝Docker,程序請參閱【在 WSL 2 上開始使用 Docker 遠端容器】,步驟簡單說明如下:
範例. 【行事曆】微服務佈署,程序如下圖。
圖二. Docker建置與執行(Build and run),圖片來源:【Differences Between a DockerFile, Docker Image, and Docker Container】
先將src\24所有程式複製到src\25。
新增requirements.txt檔案,內容如下:
fastapi[standard]
FROM python:3.12
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY . /code
CMD ["fastapi", "run", "./fastapi_calendar.py", "--port", "80"]
啟動Docker Desktop。
建置image:切換至src\25資料夾,執行下列指令,myimage是image名稱,可視需要變更。
docker build -t myimage .
docker run -d --name mycontainer -p 80:80 myimage
http://localhost
補充說明:
虛擬容器化(Containerization)是微服務(Microservices)佈署的利器,透過image可以大量佈署至許多container,非常方便、迅速。
下一篇將繼續討論微服務的【服務發現】(Service discovery)及訊息傳遞軟體(Message broker),加強微服務的聯繫。
本系列的程式碼會統一放在GitHub,本篇的程式放在src/25資料夾,歡迎讀者下載測試,如有錯誤或疏漏,請不吝指正。