您的位置:首页 > 运维架构 > Docker

gerrit 基于docker实现的部署,包括nginx ssl、mysql

2016-05-20 15:34 741 查看
gerrit 基于docker容器的部署:

命令行启动
1.  启动mysql容器
sudo docker run --name mysql -d -v /gerrit_mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123qwezxc -e MYSQL_DATABASE=reviewdb -e MYSQL_USER=gerrit2 -e MYSQL_PASSWORD=gerrit mysql

2. 启动gerrit容器
sudo docker run --name gerrit2 --link mysql:db -d -p 8080:8080 -p 29418:29418 -v /gerrit_volume:/var/gerrit/review_site -e DATABASE_TYPE=mysql -e WEBURL=https://9.186.89.219 -e DB_ENV_MYSQL_DB=reviewdb  -e HTTPD_LISTENURL=proxy-https://*:8080/ openfrontier/gerrit

3. 启动nginx_ssl_gerrit,此镜像是根据官方nginx镜像生成,对应的Dockerfile配置如下:
a. mkdir nginx_ssl_gerrit && cd nginx_ssl_gerrit
b. cat > Dockerfile <<EOF
FROM nginx
COPY ./nginx/ /etc/nginx/conf.d/
EOF
c. nignx的目录结构如下:
nginx_ssl_gerrit/
├── Dockerfile
└── nginx
├── default.conf  #ssl的相关配置
├── gerrit.crt    #自签证书公钥
└── gerrit.key 	  #自签证书私钥

d. default.conf 配置如下:
cat > default.conf <<EOF
server {
listen 443;
server_name 127.0.0.1;

ssl  on;
ssl_certificate      conf.d/gerrit.crt;
ssl_certificate_key  conf.d/gerrit.key;

location / {
proxy_pass              http://gerrit:8080; proxy_set_header        X-Forwarded-For $remote_addr;
proxy_set_header        Host $host;
}

location /login/ {
proxy_pass              http://gerrit:8080; proxy_set_header        X-Forwarded-For $remote_addr;
proxy_set_header        Host $host;
}
}
EOF

e. 自签公私钥证书的生成
openssl req -x509 -days 3650 -subj "/CN=9.186.89.219/" -nodes -newkey rsa:4096 -sha256 -keyout gerrit.key -out gerrit.crt

总结:
安装过程中可能遇到的问题:
1. Missing project All-Projects
解决方法:
进入msyql容器,先删除reviewdb数据库,然后重新创建reviewdb数据库,最后重启启动gerrit容器即可

2. 由于采用的认证方式是OPEID,可能遇到第一个账户登录后,没有管理员权限(gerrit默认第一个登录的用户为管理员账户)
解决方法:
a. 删除reviewdb,然后重新创建;
b. 删除gerrit启动时生成的所有文件,即/gerrit_volume:/var/gerrit/review_site中的所有文件

3. 使用 ssh -p 29418 docker_lab@localhost gerrit gsql, 报错:fatal: docker_lab does not have "Access Database" capability.
解决方法: http://jingyan.baidu.com/article/046a7b3ea8122ef9c27fa919.html 
为了方便管理,可以使用docker-compose来管理多个容器:
1. docker-compose.yml配置文件如下:
a. mkdir gerrit-deploy && cd gerrit-deploy
cat > docker-compose.yml <<EOF
nginx:
image: nginx_ssl_gerrit
restart: always
links:
- gerrit2:gerrit
ports:
- 443:443

gerrit2:
image: openfrontier/gerrit
restart: always
links:
- mysql:db
ports:
- 8080:8080
- 29418:29418
volumes:
- /gerrit_volume:/var/gerrit/review_site
environment:
- DATABASE_TYPE=mysql
- DB_ENV_MYSQL_DB=reviewdb
- WEBURL=https://9.186.89.219
- HTTPD_LISTENURL=proxy-https://*:8080/

mysql:
image: mysql
restart: always
volumes:
- /gerrit_mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123qwezxc
- MYSQL_DATABASE=reviewdb
- MYSQL_USER=gerrit2
- MYSQL_PASSWORD=gerrit
EOF

2. 启动容器:
sudo docker-compose up -d

3. 查看是否启动:
sudo docker-compose ps
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql openid docker