DevOps

Docker:

## 安装Docker
yum remove docker docker-client docker-client-latest docker-common docker-latest \
                  docker-latest-logrotate docker-logrotate docker-engine && \ 
yum install -y yum-utils && \
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
yum install -y docker-ce docker-ce-cli containerd.io

Docker-Compose:

官方文档

  1. 安装
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装不同版本的 Compose,请将 1.29.2 替换为您要使用的 Compose 版本

  1. 授权
## 对二进制文件应用可执行权限
chmod +x /usr/local/bin/docker-compose
## 查看是否安装完成
docker-compose --version
  1. 配置软链(可选)
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Nexus3:

# Dockerfile
FROM sonatype/nexus3:3.33.0
VOLUME /home/nexus-data:/nexus-data 
EXPOSE 8081

# mkdir /home/nexus-data  docker run 
mkdir /home/nexus-data && \
chmod -R 777 /home/nexus-data && \
docker run -d -p 8081:8081 -v /home/nexus-data:/nexus-data  --name nexus sonatype/nexus3:3.33.0

Jenkins:

# Dockerfile
FROM jenkins/jenkins:lts-jdk11
VOLUME /home/jenkins_home:/var/jenkins_home 
EXPOSE 8080 50000

# mkdir /home/jenkins_home  docker run 
mkdir /home/jenkins_home && chmod -R 777 /home/jenkins_home && \
docker run -p 8080:8080 -p 50000:50000 -v /home/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins:lts-jdk11

SonarQube:

#Dockerfile
FROM sonarqube:lts-enterprise
VOLUME /home/sonarqube/data:/opt/sonarqube/data
VOLUME /home/sonarqube/logs:/opt/sonarqube/logs
VOLUME /home/sonarqube/extensions:/opt/sonarqube/extensions

## Docker Host Requirements(Docker的宿主机需要的一些配置) 
## 宿主机的内存至少2G或以上,不然会出现连接不上ES的错误
## 查看
sysctl vm.max_map_count && sysctl fs.file-max && ulimit -n && ulimit -u
## 修改
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192

# mkdir -p /home/sonarqube/{data,logs,extensions} && chmod -R 777 /home/sonarqube
 mkdir -p /home/sonarqube/{data,logs,extensions} && chmod -R 777 /home/sonarqube && \
 docker run -it -p 9000:9000 -v /home/sonarqube/data:/opt/sonarqube/data -v /home/sonarqube/logs:/opt/sonarqube/logs -v /home/sonarqube/extensions:/opt/sonarqube/extensions --name sonarQube sonarqube:lts-enterprise

建议为以下目录创建卷:

  • /opt/sonarqube/data: 数据文件,例如嵌入式 H2 数据库和 Elasticsearch 索引
  • /opt/sonarqube/logs: 包含有关访问、Web 进程、CE 进程、Elasticsearch 日志的 SonarQube 日志
  • /opt/sonarqube/extensions: 第 3 方插件

Docker-Compose:

使用docker-compose部署jenkins,nexus3,sonarqube,postgreSql.

  1. docker-compose.yml
version: "3"
services:
   sonarqube:
      image: sonarqube:8.9.2-community
      depends_on:
         - db
      environment:
         SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
         SONAR_JDBC_USERNAME: sonar
         SONAR_JDBC_PASSWORD: sonar
      volumes:
         - sonarqube_data:/opt/sonarqube/data
         - sonarqube_extensions:/opt/sonarqube/extensions
         - sonarqube_logs:/opt/sonarqube/logs
      ports:
         - "9000:9000"
   db:
      image: postgres:12
      environment:
         POSTGRES_USER: sonar
         POSTGRES_PASSWORD: sonar
      volumes:
         - postgresql:/var/lib/postgresql
         - postgresql_data:/var/lib/postgresql/data
      ports:
         - "5432:5432"
   jenkins:
      image: jenkins/jenkins:lts-jdk11
      volumes:
         - jenkins_home:/var/jenkins_home
      ports:
         - "8088:8080"
         - "50000:50000"
      extra_hosts:
         - "gitlab-dev.jinkosolar.com:172.18.2.170"
   nexus:
      image: sonatype/nexus3:3.32.0
      volumes:
         - nexus_data:/nexus-data
      ports:
         - "8081:8081"
         # 这个端口给docker私有仓库使用,在创建仓库时指定,并且在Dockers中需要添加配置 "insecure-registries":["172.18.2.170:5000"]
      - "5000:5000"
volumes:
   sonarqube_data:
   sonarqube_extensions:
   sonarqube_logs:
   postgresql:
   postgresql_data:
   jenkins_home:
   nexus_data:
  1. 启动这些服务

    ## 启动
    docker-compose -f devops/docker-compose.yml  up -d
    

配置Jenkins:

  1. 登录jenkins,

默认的密码位置在 /var/lib/docker/volumes/devops_jenkins_home/_data/secrets/initialAdminPassword 文件中

/var/lib/docker/volumes/devops_jenkins_home/_data是jenkins容器卷在宿主机的挂载位置

  1. 安装默认插件和其他常用插件

搜索关键字:roles,git,gitlab,sonar,pipeline,chinese等

  1. 配置全局凭证

  1. 新建项目

  1. 配置源码

  2. 全局工具配置

    1. Jdk

      JDK

    2. Git

      Git

    3. Maven

  3. 其他

Gitlab+Jenkins

  1. 配置gitlab-Hook

  2. Gitlab中的配置

Sonarqube+Jenkins

  1. 在Sonarqube中新建一个项目并生成一个token

  2. 配置sonarqube(需要插件SonarQube Scanner支持)

    以下配置都可以参考这个官方文档

    1. 使用 Maven 或 Gradle 分析 Java 项目

      这个我没有照着上面的官方文档,因为对照文档我没弄出来,这个相当于使用Maven进行分析,如果把命令复制到本地也是可以运行的,所以这种做法要配置好Maven

    2. 使用Pipeline的方式集成sonarqube

      • 配置凭证和sonarqube服务器地址,执行代码分析需要

      • 配置SonarQube Scanner(这种方式很麻烦,推荐使用Maven)

      • Jenkinsfile

        node {
          stage("check out"){
        //   credentialsId: jenkins配置的凭证Id  url: 仓库地址
            git  credentialsId: 'xuyuansheng', url: 'http://gitlab-dev.jinkosolar.com/xuyuansheng/jenkins-test.git'
          }
        
          stage('SCM') {
            checkout scm
          }
        
        // 使用Maven的方式 (推荐)
           stage('SonarQube Analysis') {
             def mvn = tool 'apache-maven-3.5.4';
             withSonarQubeEnv(credentialsId: 'sonarqube', installationName: 'sonarqube') {
         //     sonar.projectKey 如果不指定这个 默认为: groupId:artifactId
               sh "${mvn}/bin/mvn package sonar:sonar -Dsonar.projectKey=jinko-test1"
             }
           }
        
        //   使用Jenkins配置SonarQube Scanner全局工具方式,project.settings
        //   配置文件默认为sonar-project.properties
        //   这种方式需要提供.class文件目录,太麻烦了 不推荐使用
        //   官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/  https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
        //    stage('SonarQube analysis') {
        //        def scannerHome = tool 'SonarQube Scanner';
        //        withSonarQubeEnv(credentialsId: 'sonarqube', installationName: 'sonarqube') {
        //        // credentialsId:jenkins配置的凭证Id ,
        //        //installationName:全局配置的SonarQube server 的名称,如果有多个,需要选择其中一个
        //          sh "${scannerHome}/bin/sonar-scanner -Dproject.settings=./sonar-setting.properties"
        //        }
        //    }
        }
        
  3. end

配置nexus3:

  1. 登录nexus

默认的密码位置在 /var/lib/docker/volumes/devops_nexus_data/_data/nexus-data/admin.password 文件中

/var/lib/docker/volumes/devops_nexus_data/_data 是nexus容器卷在宿主机的挂载位置

  1. 创建自己的仓库文件存储位置

  1. 创建私有仓库,用于上传自己的Jar包

  1. 把自己新建的仓库关联到maven-pulic,之后maven的mirror都配置这个地址即可

Mysql启动和配置:

  1. docker-compose.yml
version: "3"
services:
  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
    volumes:
      - mysql_logs:/var/log/mysql
      - mysql_data:/var/lib/mysql
      - mysql_config:/etc/mysql
      - D:/Linux/docker-desktop-data/mysql:/home
volumes:
  mysql_config:
  mysql_logs:
  mysql_data:
  1. 配置,进入容器,复制/etc/mysql/my.cnf文件到/home中,方便在宿主机中修改,因为容器中默认没有vi命令

    my.cnf文件中需要加上 [mysqld]
    
    • 修改表名大小写敏感配置,lower_case_table_names=1
  2. 把修改后的配置文件复制回到/etc/mysql/目录,然后重启Mysql容器

SqlServer:

官方文档

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 -h sql1 \
   -d mcr.microsoft.com/mssql/server:2019-latest
posted @ 2022-06-07 16:23  菜阿  阅读(60)  评论(0编辑  收藏  举报