在 Docker 中執行評分服務

本模組展示如何建立 Docker 映像檔並在本機執行。

  1. 下載 ratings 微服務的 Dockerfile

    $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/Dockerfile -o Dockerfile
    
  2. 觀察 Dockerfile

    $ cat Dockerfile
    

    請注意,它會將檔案複製到容器的檔案系統中,然後執行您在上一個模組中執行的 npm install 命令。CMD 命令會指示 Docker 在 port 9080 上執行 ratings 服務。

  3. 建立一個環境變數來儲存您的使用者 ID,該 ID 將用於標記 ratings 服務的 Docker 映像檔。例如,user

    $ export USER=user
    
  4. Dockerfile 建立 Docker 映像檔。

    $ docker build -t $USER/ratings .
    ...
    Step 9/9 : CMD node /opt/microservices/ratings.js 9080
    ---> Using cache
    ---> 77c6a304476c
    Successfully built 77c6a304476c
    Successfully tagged user/ratings:latest
    
  5. 在 Docker 中執行 ratings。以下 docker run 命令指示 Docker 將容器的 port 9080 暴露到您電腦的 port 9081,讓您可以透過 port 9081 存取 ratings 微服務。

    $ docker run --name my-ratings  --rm -d -p 9081:9080 $USER/ratings
    
  6. 在您的瀏覽器中存取 https://#:9081/ratings/7 或使用以下 curl 命令。

    $ curl localhost:9081/ratings/7
    {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
    
  7. 觀察正在執行的容器。執行 docker ps 命令以列出所有正在執行的容器,並注意映像檔為 <您的使用者名稱>/ratings 的容器。

    $ docker ps
    CONTAINER ID        IMAGE            COMMAND                  CREATED             STATUS              PORTS                    NAMES
    47e8c1fe6eca        user/ratings     "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:9081->9080/tcp   elated_stonebraker
    ...
    
  8. 停止正在執行的容器。

    $ docker stop my-ratings
    

您已學會如何將單一服務封裝到容器中。下一步是學習如何將 整個應用程式部署到 Kubernetes 叢集

這些資訊對您有幫助嗎?
您是否有任何改進建議?

感謝您的回饋!