Docker基础(四)——DI、CD(一)

简介: Docker基础(四)——DI、CD

文章目录


Docker DI、CD

1.引言

2.CI介绍

3.实现持续集成

3.1 搭建Gitlab服务器

3.2 搭建Gitlab-Runner

3.3 整合项目入门测试

3.4编写.gitlab-ci.yml文件

4.CD介绍

5.实现持续交付持续部署

5.1 安装Jenkins

5.2 配置目标服务器以及Gitlab免密码登录

5.3 配置Gitlab免密码登录

5.4 配置JDK和Maven

5.5 手动拉取gitlab项目

5.6 创建maven任务

6.实现持续交付持续部署

结束


Docker DI、CD


1.引言


项目部署

1、将项目通过maven进行编译打包


2、将文件上传到指定的服务器中


3、将war包放到tomcat的目录中


4、通过Dockerfile将Tomcat和war包转成一个镜像,由DockerCompose去运行容器

项目更新了

将上述流程再次的从头到尾的执行一次


2.CI介绍


CI(continuous intergration)持续集成

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

快递发现错误。

防止代码偏离主分支。


3.实现持续集成


3.1 搭建Gitlab服务器


1、创建一个全新的虚拟机,并且至少指定4G的运行内存

2、安装docker以及docker-compose

3、将ssh的默认22端口,修改为60022端口

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

4、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

3.2 搭建Gitlab-Runner


3.3 整合项目入门测试


1、创建一个maven工程,添加web.xml文件,编写html页面

2、编写gitlab-ci.yml文件

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

3、将maven工程推送到gitlab中

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

打开gitlab控制台-左侧CI/CD-流水线-已通过

1.png

3.4编写.gitlab-ci.yml文件


1、编写.gitlab-ci.yml测试命令使用

stages:
  - test
test:
  stage: test
  script:
    - echo first test ci
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn package

2、编写关于dockerfile以及dock er-compose.yml文件的具体内容

# 1. Dockerfile
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps
# 2. docker-compose.yml
version: '3.1'
services:
  testci:
    build: docker
    restart: always
    container_name: testci
    ports:
    - 8080:8080
# 3. 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)

3、测试

1.png


4.CD介绍


CD(持续交付,持续部署)


5.实现持续交付持续部署


5.1 安装Jenkins


官网:https://www.jenkins.io/

version: '3.1'
services:
  jeckins:
    image: jenkins/jenkins
    restart: always
    container_name: jenkins
    ports:
      - 8888:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home

第一次运行时,会因为data目录没有权限,导致启动失败

chmod 777 data

访问http://192.168.199.109:8888

访问速度奇慢无比。。。。

输入密码

1.png

手动指定插件安装:指定下面两个插件即可

Publish ssh

git param…

安装成功后,需要指定用户名和密码

1.png

5.2 配置目标服务器以及Gitlab免密码登录


Gitlab -> Jenkins -> 目标服务器

1、Jenkins去连接目标服务器

左侧的系统设置

1.png

选中系统设置

1.png

搜索Publish over SSH

1.png

点击新增

1.png

相关文章
|
11天前
|
存储 测试技术 持续交付
Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用
本文探讨了Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用。首先介绍了CI/CD的基本概念,接着阐述了Docker在环境一致性、快速部署、资源隔离和轻量化方面的优势。文章还详细讨论了构建、测试和部署阶段的具体集成方法,以及集成后带来的效率提升、可靠性增强、加速交付和易于管理等好处。最后,通过案例分析展示了集成的实际效果,强调了Docker与CI/CD结合的重要性和未来前景。
20 2
|
2月前
|
jenkins 测试技术 持续交付
Docker最佳实践:构建高效的CI/CD流水线
【10月更文挑战第17天】在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)已成为提高开发效率和软件质量的重要手段。Docker作为一种容器技术,为构建一致且隔离的开发环境提供了强有力的支撑。本文将探讨如何利用Docker来优化CI/CD流程,包括构建环境的标准化、镜像管理以及与CI/CD工具(如Jenkins、GitLab CI)的集成。
62 5
|
4月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。
|
4月前
|
测试技术 持续交付 开发者
使用Docker构建CI/CD流程:从理论到实践
【8月更文挑战第2天】使用Docker构建CI/CD流程,可以显著提高软件开发的效率和质量。通过容器化技术,开发者可以确保环境的一致性,快速部署和测试应用,并减少人为错误。结合合适的CI/CD工具和最佳实践,可以进一步加速软件交付过程,提高用户满意度。希望本文能为开发者在构建基于Docker的CI/CD流程时提供有价值的参考。
|
5月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
7月前
|
存储 测试技术 持续交付
【Docker 专栏】Docker 与 CI/CD 的集成策略
【5月更文挑战第8天】本文探讨了Docker在CI/CD流程中的作用,强调了环境一致性、快速部署和资源隔离等优势。通过在构建、测试和部署阶段集成Docker,可以提升软件开发效率和质量。具体集成策略包括使用Dockerfile构建镜像、整合CI/CD工具如Jenkins和GitLab。集成带来的好处包括提高效率、增强可靠性、加速交付和简化管理。然而,也需应对镜像管理、网络配置和安全等问题。通过案例分析,证明了Docker与CI/CD集成的有效性和必要性。
129 2
【Docker 专栏】Docker 与 CI/CD 的集成策略
|
7月前
|
jenkins Java 持续交付
Jenkins与Docker的自动化CI/CD实战
Jenkins与Docker的自动化CI/CD实战
|
7月前
|
Devops 开发工具 数据安全/隐私保护
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)
257 0
|
7月前
|
存储 jenkins 持续交付
百度搜索:蓝易云【Docker+Rancher+Harbor+GitLab+Jenkins搭建CI/CD环境】
请注意,上述步骤仅为一个示例,实际搭建过程可能因环境和需求的不同而有所变化。因此,在实际操作中,请参考相应工具的官方文档和指南,以确保正确地配置和集成这些工具。
114 3
|
7月前
|
jenkins 测试技术 持续交付
深入理解CI/CD与Docker集成:自动化构建和部署的完整指南
在当今软件开发的快节奏环境中,自动化构建和部署是实现敏捷开发和DevOps实践的关键。Docker容器技术为这一过程引入了更高的灵活性和一致性。本文将深入研究如何将持续集成/持续部署(CI/CD)与Docker集成,提供更详细、实用的示例代码,以帮助大家全面了解并成功应用这一重要的DevOps实践。