Docker在CentOS上的自动化部署
导读:Docker在CentOS上的自动化部署指南 1. 准备Docker环境 在CentOS系统上部署Docker前,需先安装并配置Docker环境。以CentOS 7为例,可通过以下命令完成安装: # 添加Docker官方YUM源 curl...
Docker在CentOS上的自动化部署指南
1. 准备Docker环境
在CentOS系统上部署Docker前,需先安装并配置Docker环境。以CentOS 7为例,可通过以下命令完成安装:
# 添加Docker官方YUM源
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker CE及必要组件
yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务并设置开机自启
systemctl start docker &
&
systemctl enable docker
# 验证Docker安装
docker --version
上述步骤确保系统具备Docker运行环境,为后续镜像构建与容器部署奠定基础。
2. 编写Dockerfile定义应用环境
Dockerfile是容器化的核心配置文件,用于描述应用的运行环境、依赖及启动命令。以下是常见场景的示例:
- Node.js应用:
FROM node:14 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD ["node", "app.js"] - Python应用:
FROM python:3.8-slim WORKDIR /app COPY . /app RUN pip install --no-cache-dir -r requirements.txt EXPOSE 80 CMD ["python", "app.py"] - CentOS基础镜像(用于自定义CentOS环境):
FROM centos:latest ENV NAME World RUN echo "Hello, ${ NAME} " EXPOSE 80 CMD ["echo", "Custom CentOS container ready"]
根据应用类型调整Dockerfile内容,确保镜像包含应用运行所需的所有依赖。
3. 编写自动化部署脚本
通过Shell脚本自动化Docker镜像构建、容器运行及状态检查,减少手动操作误差。示例如下:
#!/bin/bash
# 定义镜像与容器名称
IMAGE_NAME="my-node-app"
CONTAINER_NAME="my-running-app"
# 构建Docker镜像
echo "Building Docker image: $IMAGE_NAME"
docker build -t $IMAGE_NAME .
# 检查容器是否已存在,存在则停止并删除
if docker ps -a | grep -q $CONTAINER_NAME;
then
echo "Container $CONTAINER_NAME exists. Stopping and removing..."
docker stop $CONTAINER_NAME &
&
docker rm $CONTAINER_NAME
fi
# 运行新容器
echo "Running new container: $CONTAINER_NAME"
docker run -d -p 8080:8080 --name $CONTAINER_NAME $IMAGE_NAME
# 检查容器状态
echo "Container status:"
docker ps -a | grep $CONTAINER_NAME
保存为deploy.sh后,赋予执行权限:
chmod +x deploy.sh
运行脚本即可自动完成镜像构建与容器部署。
4. 使用CI/CD工具实现代码触发自动化
为实现代码提交后自动部署,可集成Jenkins、GitLab CI/CD或GitHub Actions等工具。以下以GitHub Actions为例:
- 在项目根目录创建
.github/workflows/deploy.yml文件:name: Deploy to Docker on CentOS on: push: branches: - main # 当main分支有推送时触发 jobs: build-and-deploy: runs-on: ubuntu-latest steps: # 拉取代码 - name: Checkout code uses: actions/checkout@v2 # 构建并推送Docker镜像到Docker Hub - name: Build and push Docker image uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile push: true tags: your-dockerhub-username/my-node-app:latest # 通过SSH连接到CentOS服务器执行部署脚本 - name: Deploy to server run: | ssh -o StrictHostKeyChecking=no ${ { secrets.SERVER_USER } } @${ { secrets.SERVER_HOST } } 'bash -s' < deploy.sh - 配置GitHub Secrets:在仓库Settings→Secrets中添加
SERVER_USER(服务器用户名)、SERVER_HOST(服务器IP/域名)等敏感信息。 每次向main分支推送代码时,GitHub Actions会自动构建镜像、推送到Docker Hub,并通过SSH在CentOS服务器上执行deploy.sh脚本完成部署。
5. 可选:使用Docker Compose管理多容器应用
若应用包含多个服务(如Web+数据库),可使用docker-compose.yml定义服务关系,并通过脚本自动化部署:
- 编写
docker-compose.yml:version: '3.8' services: web: build: . ports: - "8080:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example - 编写部署脚本
deploy_compose.sh:#!/bin/bash # 拉取最新镜像并重启容器 docker-compose pull docker-compose up -d
运行./deploy_compose.sh即可自动部署多容器应用。
6. 安全与监控建议
- 安全加固:使用非root用户运行容器(在Dockerfile中添加
USER nonroot)、限制容器资源(--memory、--cpu参数)、定期更新镜像。 - 监控与日志:通过
docker logs -f < container_name>查看实时日志,或集成Prometheus+Grafana监控容器性能。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在CentOS上的自动化部署
本文地址: https://pptw.com/jishu/741280.html
