• 部门sonarque代码扫描测试服务器docker化


    部门内部的服务器太多了,打算将对应的测试环境docker化。

    转成docker后,以后不管是升级调研还是定制化开发测试都方便,就是事情太多,一直没有抽出身来做,今天处理下并把过程记录下来跟大家分享下。

    收集环境生产服务器环境信息

    Docker的环境需要同生产服务器相应版本保持一致。

    • mysql 5.7

    • jdk8

    • sonarqube.3

     

     

     下载对应docker镜像

    1.打开Docker公共仓库:https://hub.docker.com/搜索对应程序,如sonarqube。

    2.点击“DETAILS”,可以查看DockerPull Command和Full Description

    3.点击Tags查看历史版本,找到对应版本,比如我要的是6.3:

    4.登入docker-server,搜索sonarqube:

    [root@vm-90-169  ~]# docker search sonarqube

    INDEX       NAME                                              DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED

    docker.io   docker.io/sonarqube                               SonarQube is  an open source platform for c...   758       [OK]      

    5.下载镜像对应版本:

    [root@vm-90-169 ~]# docker pull  docker.io/sonarqube:6.3

    6.查看下载镜像

    [root@vm-90-169 ~]# docker images | grep  6.3

    docker.io/sonarqube              6.3                 752d427d3de6        11 months ago       770 MB

    7.同样的操作,下载其他的镜像。

     注:部分容器可以设置启动参数,可以在docker-hub上找到

     

    启动容器

    Mysql启动参数:

    https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html

    常用的参数:

    MYSQL_ROOT_PASSWORD : root用户的密码,这里设置的初始化密码为`123456`;

    MYSQL_DATABASE : 运行时需要创建的数据库名称;

    MYSQL_USER : 运行时需要创建用户名,与MYSQL_PASSWORD一起使用;

    MYSQL_PASSWORD : 运行时需要创建的用户名对应的密码,与MYSQL_USER一起使用;

    MYSQL_ALLOW_EMPTY_PASSWORD : 是否允许root用户的密码为空,该参数对应的值为:yes;

    MYSQL_RANDOM_ROOT_PASSWORD:为root用户生成随机密码;

    MYSQL_ONETIME_PASSWORD : 设置root用户的密码必须在第一次登陆时修改(只对5.6以上的版本支持)。

    MYSQL_ROOT_PASSWORD 和 MYSQL_RANDOM_ROOT_PASSWORD 两者必须有且只有一个。

           Sonarqube的启动参考:

    $ docker run -d --name sonarqube

         -p 9000:9000 -p 9092:9092

         -e SONARQUBE_JDBC_USERNAME=sonar

         -e SONARQUBE_JDBC_PASSWORD=sonar

         -e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar

         sonarqube

    调整通过docker-compose管理

    注:sonarqube的容器,自带的jdk就是1.8的版本,所以不再单独准备jdk的镜像

    [root@vm-90-169 sonarqube]# docker exec  -it 856fd94bddb0 /bin/bash

    root@856fd94bddb0:/opt/sonarqube# java  -version

    openjdk version "1.8.0_121"

    OpenJDK Runtime Environment (build  1.8.0_121-8u121-b13-1~bpo8+1-b13)

    OpenJDK 64-Bit Server VM (build  25.121-b13, mixed mode)

    查看启动结果:

    注意事项:

           SONARQUBE_JDBC_URL

           一定要配置正确,同时要注意sonarqube对mysql的版本支持。

           版本

    一定要锁定镜像到最小的版本,因为mysql镜像升级后需要你手动在容器中执行命令去 mysql-upgrade,否则很久之后,你才发现有的数据已经损坏了。
    实在想升级,升级步骤如下:

      • 如果是用 docker run 启动的,那么停掉再启动个新的。如果是用 docker-compose 启动的,直接改版本号 pull 镜像重新 up。

      • 在新的版本启动后执行 docker exec -it 你的容器名称或idmysql-upgrade

    端口

    如果想在外部通过工具访问,需要将3306端口映射到host上的一个端口,不准备外部访问的环境则不必。

    时区

    添加环境变量 TZ 让mysql用你的默认时区启动。

    字符编码

    mysql 的镜像默认编码是 latin1,在中国我们一般都用 UTF8 。
    一般我们要是在主机上配置 mysql 的话,是去修改配置文件。但使用容器时映射进去一个配置文件是很复杂的。
    于是我们有个简单的办法,mysql 接受很多 flag 通过启动时传入。其中就有声明服务器默认编码的。
    我们的 command 命令就是给mysql 在启动时加了两个参数。 

    存储

    容器中有文件,需要映射出来。

    初始化

    mysql 容器在首次启动的时候,必须指定一个root密码才能启动,指定的方式是声明环境变量 MYSQL_ROOT_PASSWORD 。
    一旦在指定的数据文件夹发现已经存在库的时候,这个参数就会被忽略掉。

    所以我们只需要在第一次启动的时候加上,后面有了数据后都去掉就好了。

    导入导出

    在容器中运行的 mysql 导入导出数据或结构:

          

    # Backup

    docker exec CONTAINER /usr/bin/mysqldump -u root  --password=root DATABASE > backup.sql

    # Restore

    docker exec -i CONTAINER /usr/bin/mysql -u root  --password=root DATABASE < backup.sql

    配置信息登记

     

    我的个人微信公众号:质量管理的哪些年。

  • 相关阅读:
    Centos7 系统更改apache默认网站目录(解决You don't have permission to access / on this server问题)
    1-18-2 LVM管理和ssm存储管理器使用&磁盘配额 (二)
    1-3 RHEL7操作系统的安装
    1-18-1 LVM管理和ssm存储管理器使用&磁盘配额(一)
    【转载】CentOS7下使用LVM给系统硬盘扩容
    自动备份Mysql数据库脚本
    docker安装nginx并配置通过https访问
    搭建本地yum源和局域网yum源
    【转载】使用Docker Hub官方gcc:latest镜像编译C/C++程序以及缩小镜像的方法
    【转载】如何使用docker部署c/c++程序
  • 原文地址:https://www.cnblogs.com/YatHo/p/8657223.html
Copyright © 2020-2023  润新知