使用Docker搭建Jira和Confluence系統

JIRA是Atlassian公司出品的項目與事務跟蹤工具,被普遍應用於缺陷跟蹤、客戶服務、需求收集、流程審批、任務跟蹤、項目跟蹤和敏捷管理等工做領域。```java

 
 

Confluence是一個專業的企業知識管理與協同軟件,也能夠用於構建企業wiki。使用簡單,但它強大的編輯和站點管理特徵可以幫助團隊成員之間共享信息、文檔協做、集體討論,信息推送。
Phabricator是一套基於Web的軟件開發協做工具,一個Web應用用於幫助軟件公司構建更好的軟件。原是facebook員工開發的可視化代碼評審工具,主要功能有CodeReview、代碼託管、Bug跟蹤、Task管理、Wiki文檔等功能。node

環境準備
本地實踐環境:mysql

OS:CentOS Linux release 7.2.1511 (Core)
Docker:v1.13.1linux

啓動Docker並將Docker添加至開機啓動
在Centos7上
[root@node-1 ~]# yum install docker -y
[root@node-1 ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node-1 ~]# systemctl start docker.service
Iptables及SELinux設置
[root@node-1 ~]# setenforce 0
setenforce: SELinux is disabled
[root@node-1 ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@node-1 ~]# getenforce
Disabled
[root@node-1 ~]# yum install iptables-services
[root@node-1 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@node-1 ~]# iptables -I INPUT -p tcp --dport 18080 -j ACCEPT
[root@node-1 ~]# iptables -I INPUT -p tcp --dport 8090 -j ACCEPTsql

[root@node-1 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]docker

[root@node-1 ~]# systemctl stop firewalld.service
[root@node-1 ~]# systemctl disable firewalld.service
安裝Myql
使用官方鏡像直接啓動容器便可。不過使用Jira和Confluence時須要添加幾個mysql啓動配置,具體可參考【Mysql鏡像說明】,packet及log_file_size參數爲應用要求防止大文件沒法存儲,utf8是爲了支持中文
注意:mysql配置文件須要從別的地方拷過來在掛載。掛載文件執行覆蓋操做,若是直接掛載會致使容器裏和本地目錄都沒有my.cnf,5.6先在本地建立個/data/mysql/conf/conf.d
不作的話 會有socket問題,緣由是配置文件不是5.6版本的配置文件數據庫

先建立一個帶文件的mysql 在進入目錄拷貝文件vim


[root@node-1 /]# docker run --name mysql -p 3306:3306 -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mysql:5.6.35windows


進入容器後查看配置文件
root@a919c77c8981:/# cat /etc/mysql/my.cnf瀏覽器

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp

Instead of skip-networking the default is now to listen only on
localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1

#log-error = /var/log/mysql/error.log

Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

  • IMPORTANT: Additional settings that can override those from this file!
    The files must end with '.cnf', otherwise they'll be ignored.

includedir /etc/mysql/conf.d/

刪除容器
[root@node-1 /]# docker stop $(docker ps -aq)

[root@node-1 /]# docker rm $(docker ps -aq)

在建立掛載容器以及目錄

[root@node-1 ~]# mkdir -p /data/mysql/conf/conf.d

[root@node-1 conf]# touch my.cnf

[root@node-1 conf]# cat my.cnf

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp

Instead of skip-networking the default is now to listen only on
localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

log-error = /var/log/mysql/error.log

Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

  • IMPORTANT: Additional settings that can override those from this file!
    The files must end with '.cnf', otherwise they'll be ignored.

!includedir /etc/mysql/conf.d/

[root@node-1 ~]# docker run --name mysql -p 3306:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mysql:5.6.35
c0f2f735b1db0325ed2b17013f9a735c7a167452a6df2130f630d591f2d7d50a

查看容器
[root@node-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0f2f735b1db mysql:5.6.35 "docker-entrypoint..." 3 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql
進入容器
[root@node-1 ~]# docker exec -it mysql bash

建立Jira數據庫

root@c0f2f735b1db:/# mysql -uroot -p123456
mysql> show variables like 'char%';
使用Docker搭建Jira和Confluence系統

mysql> CREATE DATABASE jira CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on jira.* TO 'jira'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW CREATE DATABASE jira;

使用Docker搭建Jira和Confluence系統
建立Confluence數據庫
mysql> CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON confluence.* TO 'confluence'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
查詢用戶
mysql> SELECT User, Host, Password FROM mysql.user;
使用Docker搭建Jira和Confluence系統
mysql> SHOW CREATE DATABASE confluence;
使用Docker搭建Jira和Confluence系統

安裝Jira
使用官方鏡像直接啓動Jira容器。這個服務沒有太多問題,注意端口是否監聽正確及相關端口(數據庫端口、應用端口)是否放開,這裏的端口放開是指本機防火牆,外網防火牆不該放行數據庫端口
[root@node-1 ~]# docker run -p 18080:8080 -dit --name jira docker.io/cptactionhank/atlassian-jira
[root@node-1 ~]# docker ps
使用Docker搭建Jira和Confluence系統
[root@node-1 ~]#docker exec -it jira /bin/bash
[root@node-1 ~]#docker restart jira
[root@node-1 ~]#docker logs -f jira

在瀏覽器訪問http://YOURIP:18080跟着提示安裝便可。

使用Docker搭建Jira和Confluence系統

設置本身的jira 點擊下一步
使用Docker搭建Jira和Confluence系統

用於本身的數據庫
使用Docker搭建Jira和Confluence系統
數據庫類型選擇mysql5.6 主機名是docker-0 的內網地址和你服務器的外網地址
使用Docker搭建Jira和Confluence系統

點擊測試連接 出現數據庫連接成功便可
使用Docker搭建Jira和Confluence系統

後續因爲是管理員配置 自行配置便可
安裝Confluence
因爲Jira使用的是MySQL方便起見Confluence也要用Mysql,可是使用官方鏡像會有如下問題

a.官方的對於PostSQL支持能夠,但沒法直接鏈接mysql須要自行安裝支持java鏈接mysql的組件
b.中文Office在Confluence的預覽查看會出現亂碼狀況,須要修改confluence鏈接參數及自行添加中文字體庫
c.官方使用了不受支持的openjdk,須要更改jdk環境爲Oracle JDK

鑑於這種狀況使用這個官方鏡像就很不理智了,還但願使用docker,只能本身作一個鏡像了

製做鏡像
準備工做
Step 1: 下載java-mysql
能夠從Mysql官方【】進行下載解壓,只須要其中的兩個文件,按下面的目錄結構存放就能夠了
Step 2: 準備中文字體庫
這個能夠從身邊現成的windows機器上直接壓縮拷貝過來就好了,windows下的字體存放在C:\Windows\Fonts,而後按下面的目錄結構存放就能夠了,注意這個壓縮包須要和我下面目錄的一直,否則須要自行更改Dockerfile文件,還有這個壓縮包應該是解壓完後是Fonts/字體這樣的結構

進入opt目錄
[root@node-1 opt]# wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
構建的目錄結構 要保持在同級目錄下

├── chinese-win.tar.gz
├── Dockerfile
├── entrypoint.sh
├── java-mysql
├── mysql-connector-java-5.1.46-bin.jar
└── mysql-connector-java-5.1.46.jar

構建文件及啓動腳本

主構建文件Dockerfile以下

FROM anapsix/alpine-java:8_jdk
LABEL "Author":"admin@qq.com" \
"Date":"2018-04-11"
ENV RUN_USER daemon
ENV RUN_GROUP daemon
ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence
ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence

VOLUME ["${CONFLUENCE_HOME}"]

EXPOSE 8090
EXPOSE 8091
WORKDIR $CONFLUENCE_HOME
RUN apk update -qq \
&& update-ca-certificates \
&& apk add ca-certificates wget curl openssh bash procps openssl perl ttf-dejavu tini\
&& rm -rf /var/lib/{apt,dpkg,cache,log}/ /tmp/ /var/tmp/ \
&& mkdir -p ${CONFLUENCE_INSTALL_DIR}
ARG CONFLUENCE_VERSION=6.8.1
ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz
RUN curl -L --silent ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR"
ADD chinese-win.tar.gz /usr/share/fonts/
RUN fc-cache -fv
ADD atlassian-confluence-6.8.1.tar.gz $CONFLUENCE_INSTALL_DIR/
RUN chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \
&& sed -i -e 's/-Xms([0-9]+[kmg]) -Xmx([0-9]+[kmg])/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \
&& sed -i -e '/.-Dconfluence.context.path=./a\CATALINA_OPTS="-Dconfluence.document.conversion.fontpath=/usr/share/fonts/Fonts/ ${CATALINA_OPTS}"' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \
&& sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml
COPY entrypoint.sh /entrypoint.sh
COPY java-mysql/mysql-connector-java-5.1.46.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.46.jar
COPY java-mysql/mysql-connector-java-5.1.46-bin.jar /opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.46-bin.jar

RUN chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/

CMD ["/entrypoint.sh", "-fg"]
ENTRYPOINT ["/sbin/tini", "--"]

CMD tail -f /entrypoint.sh

啓動腳本entrypoint.sh以下
!/bin/bash
set -euo pipefail
Setup Catalina Opts
: ${CATALINA_CONNECTOR_PROXYNAME:=}
: ${CATALINA_CONNECTOR_PROXYPORT:=}
: ${CATALINA_CONNECTOR_SCHEME:=http}
: ${CATALINA_CONNECTOR_SECURE:=false}
: ${CATALINA_OPTS:=}
CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}"
CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}"
CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}"
CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}"
export CATALINA_OPTS
Start Confluence as the correct user
if [ "${UID}" -eq 0 ]; then
echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}"
PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}")
EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700
if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then
chmod -R 700 "${CONFLUENCE_HOME}" &&
chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}"
fi
Now drop privileges
exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@"
else
exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@"
fi

上傳中文包和腳本
解壓下載的jdk
[root@node-1 opt]# tar xf mysql-connector-java-5.1.46.tar.gz
[root@node-1 opt]# mv mysql-connector-java-5.1.46 java-mysql

構建鏡像
ls #進入dockerfile同級目錄
[root@node-1 opt]# ls
chinese-win.tar.gz Dockerfile entrypoint.sh java-mysql
[root@node-1 opt]# docker build -t confluence-oracle-jdk:v6.8.1 . --no-cache
構建過程截圖
使用Docker搭建Jira和Confluence系統
使用Docker搭建Jira和Confluence系統
使用Docker搭建Jira和Confluence系統
使用Docker搭建Jira和Confluence系統
出現成功完成沒報錯就表示成功
查看鏡像
使用Docker搭建Jira和Confluence系統

啓動容器
[root@node-1 opt]# docker run -v /data/confluence:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 confluence-oracle-jdk:v6.8.1
c7f701586093f82b56cdcec3e602932640c18c9ad5d0d6017f774d998b202111
查看容器 所有爲UP啓動成功
[root@node-1 opt]# docker ps
使用Docker搭建Jira和Confluence系統
#Manage Confluence
[root@node-1 opt]# docker ps
[root@node-1 opt]# docker exec -it confluence /bin/bash
[root@node-1 opt]# docker stop confluence
[root@node-1 opt]# docker start confluence
[root@node-1 opt]# docker logs confluence
[root@node-1 opt]# docker logs -f confluence
打開瀏覽器輸入ip地址:8090

使用Docker搭建Jira和Confluence系統
出現這個頁面就是成功如今配置受權和mysql
點擊產品安裝 而後下一步
使用Docker搭建Jira和Confluence系統
出現插件 能夠選擇不安裝直接下一步 也能夠選擇 此次什麼都不選擇

出現獲取受權碼點擊 試用受權
使用Docker搭建Jira和Confluence系統

出現界面 點擊你須要選擇的服務 填寫團隊名稱 點擊肯定
使用Docker搭建Jira和Confluence系統

肯定後會出現IP檢測 點擊yes便可
使用Docker搭建Jira和Confluence系統

網址會自動跳轉到 受權碼界面 點擊下一步 

使用Docker搭建Jira和Confluence系統
會出現 設置數據庫選擇本身的數據庫選擇 mysql
使用Docker搭建Jira和Confluence系統
設置好 ip地址 和數據庫名字密碼

若是設置數據庫出現如下錯誤請按照官方填寫
使用Docker搭建Jira和Confluence系統
在my.cnf 下添加如下字段
[mysqld]
...
transaction-isolation=READ-COMMITTED

進入 confluence映射的配置文件
[root@node-1 conf]# vim /data/confluence/confluence.cfg.xml
<properties>
...
<property name="hibernate.connection.isolation">2</property>
...
<properties>

重啓 confluence和mysql服務
[root@node-1 conf]# docker restart mysql
mysql
[root@node-1 conf]# docker restart confluence
confluence
[root@node-1 conf]# docker ps
點擊測試數據庫出現成功 點擊下一步 須要等待一分鐘

使用Docker搭建Jira和Confluence系統
出現如下內容可自行配置
使用Docker搭建Jira和Confluence系統

總結:本文先建立帶文件的mysql容器從mysql容器拷貝my.cnf文件再次去拉起容器和映射文件重啓mysql

相關文章
相關標籤/搜索