使用 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”)。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

在容器中运行本地测试

使用 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 管道以简化流程。

广告