首页主机资讯Ubuntu Docker如何进行自动化部署

Ubuntu Docker如何进行自动化部署

时间2025-10-01 12:27:04发布访客分类主机资讯浏览1346
导读:Ubuntu Docker自动化部署常见方法 1. 使用Shell脚本实现基础自动化部署 Shell脚本是最基础的自动化方式,通过编写脚本自动完成Docker镜像构建、容器启停、旧资源清理等操作。 步骤: 编写部署脚本(如deploy.s...

Ubuntu Docker自动化部署常见方法

1. 使用Shell脚本实现基础自动化部署

Shell脚本是最基础的自动化方式,通过编写脚本自动完成Docker镜像构建、容器启停、旧资源清理等操作。
步骤

  • 编写部署脚本(如deploy.sh),包含镜像存在性检查、镜像构建、容器启停逻辑。示例如下:
    #!/bin/bash
    IMAGE_NAME="your-image-name"
    CONTAINER_NAME="your-container-name"
    if ! docker image inspect $IMAGE_NAME &
        >
         /dev/null;
         then
        echo "Building Docker image..."
        docker build -t $IMAGE_NAME .
    fi
    if ! docker ps -a | grep $CONTAINER_NAME &
        >
         /dev/null;
     then
        echo "Starting Docker container..."
        docker run -d --name $CONTAINER_NAME $IMAGE_NAME
    else
        echo "Docker container is already running."
    fi
    echo "Deployment completed."
    
  • 赋予执行权限chmod +x deploy.sh
  • 运行脚本./deploy.sh
    优势:简单易用,适合单机或简单场景的自动化部署。

2. 使用Docker Compose编排多容器应用

Docker Compose通过docker-compose.yml文件定义多容器服务的配置(如网络、卷、端口映射),实现一键启动、停止、重启多容器应用。
步骤

  • 安装Docker Compose
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  • 编写docker-compose.yml文件:定义服务、镜像、端口等配置。示例如下:
    version: '3'
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./app:/usr/share/nginx/html
    
  • 启动服务docker-compose up -d(后台运行);停止服务:docker-compose down
    优势:简化多容器应用的部署和管理,适合微服务或前后端分离的场景。

3. 使用Ansible实现远程自动化部署

Ansible是基于SSH的自动化运维工具,通过Playbook定义部署流程,实现远程Ubuntu服务器上的Docker安装、配置及应用部署。
步骤

  • 安装Ansible(控制节点):sudo apt install ansible -y
  • 配置清单文件inventory):定义目标服务器(托管节点)。示例如下:
    [docker]
    ubuntu ansible_ssh_host=192.168.1.100
    
  • 编写Playbookdeploy.yml):定义Docker安装、服务启动等任务。示例如下:
    ---
    - name: Deploy Docker on Ubuntu
      hosts: docker
      become: yes
      tasks:
        - name: Install Docker
          apt:
            name: docker.io
            state: present
        - name: Start Docker service
          systemd:
            name: docker
            state: started
            enabled: yes
    
  • 执行Playbookansible-playbook -i inventory deploy.yml
    优势:支持批量远程操作,无需在目标服务器安装Ansible,适合大规模服务器集群的自动化管理。

4. 结合CI/CD工具实现全流程自动化

CI/CD工具(如Jenkins、GitLab CI/CD、GitHub Actions)可实现代码提交、构建、测试、部署的全流程自动化,适用于DevOps场景。
以GitHub Actions为例

  • 创建.github/workflows/deploy.yml文件:定义部署流程。示例如下:
    name: Docker Deployment
    on:
      push:
        branches: [ main ]
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v3
          - name: Login to Docker Hub
            uses: docker/login-action@v2
            with:
              username: ${
    {
     secrets.DOCKER_HUB_USERNAME }
    }
    
              password: ${
    {
     secrets.DOCKER_HUB_TOKEN }
    }
    
          - name: Build and push image
            run: |
              docker build -t your-dockerhub-username/your-image-name:${
    {
     github.sha }
    }
     .
              docker push your-dockerhub-username/your-image-name:${
    {
     github.sha }
    }
    
          - name: Deploy to Ubuntu server
            uses: appleboy/ssh-action@master
            with:
              host: ${
    {
     secrets.SERVER_IP }
    }
    
              username: ${
    {
     secrets.SERVER_USER }
    }
    
              key: ${
    {
     secrets.SSH_KEY }
    }
    
              script: |
                docker pull your-dockerhub-username/your-image-name:${
    {
     github.sha }
    }
    
                docker stop your-container-name || true
                docker rm your-container-name || true
                docker run -d --name your-container-name -p 80:80 your-dockerhub-username/your-image-name:${
    {
     github.sha }
    }
        
    

优势:实现代码变更自动触发部署,减少人工干预,提高交付效率。

5. 使用第三方自动化部署工具(如Spug、Jpom)

第三方工具提供了可视化界面和更多高级功能(如项目管理、日志监控、定时任务),适合中小团队快速搭建自动化部署平台。

  • Spug
    • 安装sudo docker run -d --restart=always --name=spug -p 80:80 -v /spug:/data registry.aliyuncs.com/openspug/spug
    • 初始化sudo docker exec spug init_spug admin spug.dev,访问http://IP:80登录。
    • 使用:通过Web界面创建项目、配置部署流程(如代码拉取、Docker构建、容器启停)。
  • Jpom
    • 安装docker pull jpom/jpom
    • 启动docker run -p 2122:2122 --name jpom-server jpom/jpom
    • 使用:通过Web界面管理项目、配置自动化部署任务。
      优势:降低自动化部署的学习成本,提供更丰富的管理功能。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Docker如何进行自动化部署
本文地址: https://pptw.com/jishu/715711.html
Ubuntu环境下Golang打包的注意事项 如何优化Ubuntu Docker环境

游客 回复需填写必要信息