部門sonarque程式碼掃描測試伺服器docker化

YatHo發表於2018-03-27

部門內部的伺服器太多了,打算將對應的測試環境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

 

 

配置資訊登記

 

 

我的個人微信公眾號:質量管理的哪些年。

 

相關文章