ansible-docker-deploy
469 字
2 分钟
ansible-docker-deploy
项目目标
使用 https://github.com/fccn/ansible-docker-deploy 这个 Ansible Role,在 Rocky Linux 9 服务器上实现 Docker 应用的自动化部署。
完整流程总结
阶段 1:安装 Docker(Rocky 9)
遇到的问题:
- 官方仓库添加失败(SSL connect error)
docker run hello-world失败(connection refused / timeout)
解决方案命令:
# 1. 更新系统sudo dnf update -ysudo dnf install -y yum-utils ca-certificates
# 2. 使用阿里云 Docker 源sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 3. 安装 Dockersudo dnf makecachesudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 4. 启动 Dockersudo systemctl enable --now docker
# 5. 加入 docker 组sudo usermod -aG docker $USERnewgrp docker阶段 2:配置 Docker 国内镜像加速
遇到的问题:
- 多次
docker run hello-world失败(timeout / connection refused)
最终成功命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.1ms.run", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://hub-mirror.c.163.com" ]}EOF
sudo systemctl daemon-reloadsudo systemctl restart docker
# 测试docker run hello-world结果:hello-world 成功运行。
阶段 3:控制机(WSL Ubuntu)准备 Ansible
sudo apt update && sudo apt install ansible git sshpass -y阶段 4:下载 Role
mkdir -p ~/ansible-projects && cd ~/ansible-projectsgit clone https://github.com/fccn/ansible-docker-deploy.git阶段 5:SSH 连接问题解决
遇到的问题:
Permission denied (publickey,gssapi-keyex...)sshpass program未安装
解决方案:
# 安装 sshpasssudo apt install sshpass -yinventory.ini(最终版本):
[web_servers]rocky9 ansible_host=192.168.66.11 ansible_user=root ansible_ssh_pass=你的root密码测试连接:
ansible web_servers -i inventory.ini -m ping结果:SUCCESS + ping: "pong"
阶段 6:最终成功的 deploy.yml 配置
docker-compose.yml.j2:
version: '3.8'services: web: image: nginx:alpine container_name: nginx-test ports: - "8080:80" restart: alwaysdeploy.yml(最终稳定版本):
---- name: Deploy Nginx with Ansible Docker Role hosts: rocky9 become: yes roles: - ansible-docker-deploy
vars: docker_deploy_base_folder: /opt/myapp docker_deploy_compose_template: docker-compose.yml.j2
docker_deploy_templates: - src: docker-compose.yml.j2 dest: "{{ docker_deploy_base_folder }}/docker-compose.yml" mode: '0644'阶段 7:最终部署命令
# 清理旧目录(可选)ansible web_servers -i inventory.ini -m shell -a "rm -rf /opt/myapp"
# 执行部署ansible-playbook -i inventory.ini deploy.yml -vvv最终验证命令
docker psls -l /opt/myappcurl -I http://localhost:8080验证结果:Nginx 容器正常运行,8080 端口可访问。
完整项目文件结构(控制机)
~/ansible-projects/├── ansible-docker-deploy/ # git clone 的 Role├── inventory.ini├── deploy.yml└── docker-compose.yml.j2支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
ansible-docker-deploy
https://ztl123z.github.io/posts/drafts/ansible-docker-deploy/ 相关文章 智能推荐
1
Jenkins持续集成从入门到精通
linux RockyLinux初始化
2
RockyLinux初始化
linux RockyLinux初始化
3
shell详解
linux shell详解
4
反向代理在系统结构中的应用场景
linux 反向代理在系统结构中的应用场景
5
Nginx的安装
linux Nginx的安装
随机文章 随机推荐