部门内部的服务器太多了,打算将对应的测试环境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

配置信息登记

 

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

部门sonarque代码扫描测试服务器docker化的更多相关文章

  1. Jenkins集成openshift容器中进行代码扫描

    1.Dockerfile sonarDockerfile: (基础slave镜像参考上篇博文) FROM registry.it.com/openshift/jenkins-slave:latest ...

  2. SonarQube+jenkins-自动化持续代码扫描

    SonarQube+jenkins-自动化持续代码扫描 1.SonarQube 1.1 SonarQube介绍 1.1.1 SonarQube 工作流程 1. 2 Docker方式安装SonarQub ...

  3. Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践

    2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...

  4. SonarQube+Jenkins+Cppcheck实现C++代码扫描

    背景:公司部分项目是由C++进行开发,因此对此有需求. sonarqube:docker化安装(alpine系统),版本8.3.1 (build 34397) jenkins:docker化安装,版本 ...

  5. CI Weekly #9 | 揭秘阿里 Docker 化实践之路

    2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...

  6. Docker化tomcat 并且使用maven热部署

    今天没事干 就把自己的tomcat  docker化并且使用maven实现热部署 特别记录一下~ 1.首先进行centos7的安装 就不在记录了 注意的是最好使用centos7 因为docker 依赖 ...

  7. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  8. docker化java web应用

    一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...

  9. 测试环境docker化(一)—基于ndp部署模式的docker基础镜像制作

    本文来自网易云社区 作者:孙婷婷 背景 我所在测试项目组目前的测试环境只有一套,在项目版本迭代过程中,开发或产品偶尔会在测试环境进行数据校验,QA人数在不断增加,各个人员在负责不同模块工作时也会产生脏 ...

随机推荐

  1. JetBrains Rider 2018.1 汉化

    之前说过了JetBrains系列的破解(最新版本也可以破解)https://www.cnblogs.com/dunitian/p/8478252.html 不少人对全英文的开发环境还是不太适应,那就来 ...

  2. OpenCV支持向量机(SVM)介绍

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  3. centos7 使用rsync 实现文件同步

    一.服务端(192.168.8.81): 安装软件: yum -y install rsync 创建需同步的目录: mkdir -p /home/root/rsync 编辑配置文件:vim /etc/ ...

  4. vmware vSphere 5.5的14个新功能

    摘录自:http://www.networkworld.com/slideshow/117304/12-terrific-new-updates-in-vmware-vsphere-55.html#s ...

  5. 理解TIME_WAIT

    理解TIME_WAIT http://www.firefoxbug.com/index.php/archives/2795/ 理解TIME_WAIT(2) http://www.firefoxbug. ...

  6. Spark机器学习(4):朴素贝叶斯算法

    1. 贝叶斯定理 条件概率公式: 这个公式非常简单,就是计算在B发生的情况下,A发生的概率.但是很多时候,我们很容易知道P(A|B),需要计算的是P(B|A),这时就要用到贝叶斯定理: 2. 朴素贝叶 ...

  7. CART决策树(分类回归树)分析及应用建模

    一.CART决策树模型概述(Classification And Regression Trees)   决策树是使用类似于一棵树的结构来表示类的划分,树的构建可以看成是变量(属性)选择的过程,内部节 ...

  8. 【RS】Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model - 当因式分解遇上邻域:多层面协同过滤模型

    [论文标题]Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model   (35th-ICM ...

  9. Qt下多线程日之类

    刚google到了,晚上回去试一下! 代码地址 https://gitorious.org/cutelogger/cutelogger/source/e3c2745c6c5f38896f87472e0 ...

  10. 2013-2015 Aaronyang的又一总结,牧童遥指纳尼村

    我没有时间去唠叨自己的事,可是你们是我喜欢的人,ay很愿意写给你们分享:去年的万人阅读的总结链接:<没学历的IT人生没那么悲催,献给程序员们> 提前声明:本文不良反应:请自备垃圾桶,准备装 ...