Docker + Gitlab + Gitlab CI(三)

本文介绍了如何使用Docker、Gitlab和Gitlab CI实现Flask项目的自动化部署,包括环境准备、Swarm集群搭建、Flask应用部署、服务更新和版本自动发布。详细步骤涵盖了从配置Docker、Gitlab runner,到Swarm集群创建,再到Flask应用的构建、推送和部署。
摘要由CSDN通过智能技术生成

本文通过Docker + Gitlab + Gitlab CI实现容器的自动化部署。

环境如下:

ip role domain
192.168.1.51 prod manager none
192.168.1.52 prod worker1 none
192.168.1.53 prod worker2 none
~ ~ ~
192.168.1.54 dev manager none
192.168.1.55 dns/dev worker1 none
192.168.1.56 dev worker2 none
~ ~ ~
192.168.1.57 gitlab server gitlab.lzxlinux.cn
192.168.1.59 harbor server harbor.lzxlinux.cn

注意:为了方便后面实验,建议自定义的域名不要与外部域名冲突,否则在连接外网情况下容易解析错误。


环境准备

  • 全部进行准备工作:
# systemctl stop firewalld && systemctl disable firewalld

# setenforce 0 && sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

# yum install -y epel-release vim lrzsz net-tools gcc rsync wget unzip curl git bash-completion && yum update -y && source /etc/profile
  • 全部安装docker:
# curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo

# yum makecache fast

# yum install -y docker-ce

# systemctl start docker && systemctl enable docker

提高docker pull速度

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

# systemctl restart docker
  • 全部配置登录harbor:
# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=harbor.lzxlinux.cn

# systemctl daemon-reload && systemctl restart docker.service
  • 全部配置dns:
# vim /etc/resolv.conf              #增加一行,且放在公网dns前面

nameserver 192.168.1.55             #该ip为dns容器所在主机ip
nameserver 223.5.5.5
  • 所有节点注册runner:

不只是manager节点需要注册runner,其余节点(包括harbor服务器)也需要注册runner,gitlab服务器不需要注册runner。

runner是shell类型,下面以192.1681.1.54注册runner为例。

# echo '54.153.54.194 packages.gitlab.com' >> /etc/hosts

# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

# yum install -y gitlab-ci-multi-runner

# gitlab-ci-multi-runner status
gitlab-runner: Service is running!

# usermod -aG docker gitlab-runner

# systemctl restart docker

# gitlab-ci-multi-runner restart

# mkdir -p /etc/gitlab/ssl

# scp root@gitlab.lzxlinux.cn:/etc/gitlab/ssl/gitlab.lzxlinux.cn.crt /etc/gitlab/ssl

# gitlab-ci-multi-runner register \
  --tls-ca-file=/etc/gitlab/ssl/gitlab.lzxlinux.cn.crt \
  --url "https://gitlab.lzxlinux.cn/" \
  --registration-token "4kr9ZmLMWasYxqB2tSzQ" \
  --name "dev-runner" \
  --tag-list "dev" \
  --run-untagged="false" \
  --locked="false" \
  --executor "shell"
  
# gitlab-ci-multi-runner list
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
dev-runner                                          Executor=shell Token=uD6SbCHWc-AKp94eprRF URL=https://gitlab.lzxlinux.cn/

在这里插入图片描述

在这里插入图片描述


搭建Swarm集群

生产环境和测试环境各搭建一个swarm集群。

生产环境的swarm集群成员包括192.168.1.51、192.168.1.52、192.168.1.53,其中192.168.1.51为manager;
测试环境的swarm集群成员包括192.168.1.54、192.168.1.55、192.168.1.56,其中192.168.1.54为manager。

手动搭建swarm集群

ansible自动搭建swarm集群


Flask项目部署

Flask实现Ansible和Ansible-Playbook的配置+部署系统,同时带有简单的服务器管理系统和认证系统。

下面分别在两个manager节点部署这个flask项目,该项目包含两个服务:mysql和flask-ansible。

在192.168.1.54这个manager节点部署演示,192.168.1.51上部署与之一致。

  • 创建新的群组及项目:

新建一个群组Flask,同时新建一个项目flask-ansible

在这里插入图片描述

  • 创建secret:
# echo '123456789' > mysql_password

# docker secret create -l mysql_root_password password mysql_password

# rm -f mysql_password
  • 克隆项目:
# cd /software

# mkdir flask && cd flask

# git -c http.sslVerify=false clone https://gitlab.lzxlinux.cn/flask/flask-ansible.git
  • 修改代码:
# vim flask-ansible/config.yml

mysql:
  host: db
  port: 3306
  username: lzxlinux
  password: lzxlinuxpwd
  database: devops

# vim flask-ansible/app.py              #增加ip及端口

if __name__ == '__main__':
    app.run(
        host='0.0.0.0',
        port=5000
    )

# vim flask-ansible/Flask-Ansible.sql               #修改账号及密码

insert into user (username,password) values ('lzxlinux', md5('lzxlinuxpwd'));
  • 构建flas
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值