• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Docker-2020最新超详细版教程通俗易懂(二)【显哥出品,必为精品】

Docker lixian 2年前 (2020-07-22) 257次浏览 0个评论 扫描二维码
文章目录[隐藏]

九、CI、CD介绍及准备

1.CI、CD引言


项目部署
1.将项目通过maven进行编译打包
2.将文件上传到指定的服务器中
3.将war包放到tomcat的目录中
4.通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器
项目更新后,需要将上述流程再次的从头到尾的执行一次,如果每次更新一次都执行一次上述操作,很费时,费力。我们就可以通过CI、CD帮助我们实现持续集成,持续交付和部署

2.CI介绍


CI(continuous intergration)持续集成
持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并且测试。

1.快速发现错误。
2.防止代码偏离主分支。

3.搭建Gitlab服务器

3.1.准备环境


实现CI,需要使用到Gitlab远程仓库,先通过Docker搭建Gitlab
创建一个全新的虚拟机,并且至少指定4G的运行内存,4G运行内存是Gitlab推荐的内存大小。
并且安装Docker以及Docker-Compose

3.2 修改ssh的22端口

#将ssh的默认22端口,修改为60022端口,因为Gitlab需要占用22端口

vi /etc/ssh/sshd_config
  PORT 22 -> 60022
systemctl restart sshd

3.3 编写docker-compose.yml

docker-compose.yml文件去安装gitlab(下载和运行的时间比较长的)

version: '3.1'
services:
 gitlab:
  image: 'twang2218/gitlab-ce-zh:11.1.4'
  container_name: "gitlab"
  restart: always
  privileged: true
  hostname: 'gitlab'
  environment:
   TZ: 'Asia/Shanghai'
   GITLAB_OMNIBUS_CONFIG: |
    external_url 'http://192.168.199.110'
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['gitlab_shell_ssh_port'] = 22
  ports:
   - '80:80'
   - '443:443'
   - '22:22'
  volumes:
   - /opt/docker_gitlab/config:/etc/gitlab
   - /opt/docker_gitlab/data:/var/opt/gitlab
   - /opt/docker_gitlab/logs:/var/log/gitlab

十、搭建GitlabRunner

1.准备文件

daemon.json

{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": [ip:ports]
}

文件夹 environment里面准备maven安装包,jdk1.8安装包,Dockerfile,daemon.json以及docker-compose

2.开始搭建


创建工作目录 /usr/local/docker_gitlab-runner
将docker-compose.yml文件以及environment目录全部复制到上述目录中
在宿主机启动docker程序后先执行 sudo chown root:root /var/run/docker.sock (如果重启过 docker,重新执行)
在/usr/local/docker_gitlab-runner 目录中执行docker-compose up -d –build 启动容器
添加容器权限,保证容器可以使用宿主机的dockerdocker exec -it gitlab-runner usermod -aG root gitlab-runner
注册Runner信息到gitlab

3.进入后续步骤

docker exec -it gitlab-runner gitlab-runner register

# 输入 GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.199.109/

# 输入 GitLab Token
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh

# 输入 Runner 的说明
Please enter the gitlab-ci description for this runner:
可以为空

# 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci
Please enter the gitlab-ci tags for this runner (comma separated):
deploy

# 这里选择 true ,可以用于代码上传后直接执行(根据版本,也会没有次选项)
Whether to run untagged builds [true/false]:
true

# 这里选择 false,可以直接回车,默认为 false(根据版本,也会没有次选项)
Whether to lock Runner to current project [true/false]:
false

# 选择 runner 执行器,这里我们选择的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell

十一、整合项目入门测试

1.创建项目


创建maven工程,添加web.xml文件,编写HTML页面

2.编写.gitlab-ci.yml文件

stages:
  - test

test:
  stage: test
  script:
    - echo first test ci   # 输入的命令

3.将maven工程推送到gitlab中

执行git命令推送到Gitlab

git push origin master

4.查看效果


可以在gitlab中查看到gitlab-ci.yml编写的内容

十二、完善项目配置


添加Dockerfile以及docker-compose.yml, 并修改.gitlab-ci.yml文件

1.创建Dockerfile

# Dockerfile
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps

2.创建docker-compose.yml

# docker-compose.yml
version: "3.1"
services:
  testci:
    build: docker
    restart: always
    container_name: testci
    ports:
      - 8080:8080

3.修改.gitlab-ci.yml

# ci.yml
stages:
  - test

test:
  stage: test
  script:
    - echo first test ci
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
    - cp target/testci-1.0-SNAPSHOT.war docker/testci.war
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi $(docker images -qf dangling=true)

剩下的是Jenkins+Gitlib实现自动化部署上线,我的博客有单独的文章介绍自动化部署,感兴趣的小伙伴可以学习学习。
Gitlib文章:https://www.lixian.fun/category/devops/gitlib
Jenkins文章:https://www.lixian.fun/category/devops/jenkins

本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Docker-2020最新超详细版教程通俗易懂(二)【显哥出品,必为精品】
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到