使用 Docker 的示例部署工作流



設定專案

為應用程式中的每個服務定義 Dockerfile(例如,Web 應用程式、資料庫)。

如果您正在處理需要一起管理的多個服務,請編寫 Docker Compose 檔案(例如,“docker-compose.yml”)。

Spring Boot 應用程式的 Dockerfile 示例

# Start with an official Java runtime as the base image
FROM openjdk:17-jdk-alpine

# Set the working directory
WORKDIR /app

# Copy the application jar file into the image
COPY target/myapp.jar myapp.jar

# Expose the port the app will run on
EXPOSE 8080

# Run the application
ENTRYPOINT ["java", "-jar", "myapp.jar"]

構建 Docker 映象

docker build -t myapp:latest .

正確標記映象以管理登錄檔中的不同版本(例如,“myapp:v1.0”)。

在容器中執行本地測試

使用 Docker Compose 或單個 Docker 容器在隔離環境中執行測試。

docker-compose up -d
docker-compose exec webapp ./run-tests.sh

確保所有服務都正在執行並透過其測試。

將映象推送到 Docker 登錄檔

將您的 Docker 映象推送到容器登錄檔(例如,Docker Hub、Amazon ECR 或私有登錄檔),以便部署環境可以訪問它們。

登入並推送映象 -

docker login -u username -p password
docker tag myapp:latest username/myapp:v1.0
docker push username/myapp:v1.0

部署到暫存環境

拉取映象到暫存伺服器 -

docker pull username/myapp:v1.0

根據暫存環境設定使用 Docker Compose 或 Kubernetes 部署。

在暫存環境中執行任何其他整合或驗收測試。

監控日誌和指標

使用 Docker 命令檢查日誌和應用程式執行狀況。

docker logs -f container_name

如果使用監控工具(例如,Grafana、Prometheus),請確認應用程式指標在可接受的閾值內。

批准並部署到生產環境

一旦暫存環境中的測試透過,請透過從登錄檔中拉取映象將其部署到生產環境。

執行 Docker Compose 或 Kubernetes 命令以在生產環境中啟動服務 -

docker pull username/myapp:v1.0
docker run -d -p 8080:8080 username/myapp:v1.0

實施回滾機制

確保您已儲存先前版本的映象。如果出現問題,請重新部署最後一個穩定版本 -

docker pull username/myapp:v0.9
docker run -d -p 8080:8080 username/myapp:v0.9

使用 CI/CD 管道自動化工作流

設定一個 CI/CD 管道(例如,GitHub Actions、GitLab CI、Jenkins),它可以自動化此工作流,包括構建、測試、推送和部署階段。

CI/CD 管道指令碼示例(GitHub Actions) -

name: Docker CI/CD

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      
      - name: Build Docker image
        run: docker build -t username/myapp:${{ github.sha }} .
      
      - name: Log in to Docker Hub
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin

總結

此工作流自動化了 Docker 化應用程式的構建、測試和部署階段,提供了本地和遠端測試、回滾策略以及自動化的 CI/CD 管道以簡化流程。

廣告