標籤:gerrit openid docker mysql nginx
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 mysql2. 啟動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/gerrit3. 啟動nginx_ssl_gerrit,此鏡像是根據官方nginx鏡像產生,對應的Dockerfile配置如下:a. mkdir nginx_ssl_gerrit && cd nginx_ssl_gerritb. cat > Dockerfile <<EOFFROM nginxCOPY ./nginx/ /etc/nginx/conf.d/ EOFc. nignx的目錄結構如下:nginx_ssl_gerrit/├── Dockerfile└── nginx ├── default.conf #ssl的相關配置 ├── gerrit.crt #自簽認證公開金鑰 └── gerrit.key #自簽認證私密金鑰d. default.conf 配置如下:cat > default.conf <<EOFserver { 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; }}EOFe. 自簽公私密金鑰認證的產生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 [email protected] 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-deploycat > docker-compose.yml <<EOFnginx: image: nginx_ssl_gerrit restart: always links: - gerrit2:gerrit ports: - 443:443gerrit2: 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=gerritEOF2. 啟動容器:sudo docker-compose up -d 3. 查看是否啟動:sudo docker-compose ps
本文出自 “一切皆有可能” 部落格,請務必保留此出處http://noican.blog.51cto.com/4081966/1775417
gerrit 基於docker實現的部署,包括nginx ssl、mysql