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
刪除容器
[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
查看容器
[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%';
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;
建立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;
mysql> SHOW CREATE DATABASE confluence;
安裝Jira
使用官方鏡像直接啓動Jira容器。這個服務沒有太多問題,注意端口是否監聽正確及相關端口(數據庫端口、應用端口)是否放開,這裏的端口放開是指本機防火牆,外網防火牆不該放行數據庫端口
[root@node-1 ~]# docker run -p 18080:8080 -dit --name jira docker.io/cptactionhank/atlassian-jira
[root@node-1 ~]# docker ps
[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跟着提示安裝便可。
設置本身的jira 點擊下一步
用於本身的數據庫
數據庫類型選擇mysql5.6 主機名是docker-0 的內網地址和你服務器的外網地址
點擊測試連接 出現數據庫連接成功便可
後續因爲是管理員配置 自行配置便可
安裝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
構建過程截圖
出現成功完成沒報錯就表示成功
查看鏡像
啓動容器
[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
#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
出現這個頁面就是成功如今配置受權和mysql
點擊產品安裝 而後下一步
出現插件 能夠選擇不安裝直接下一步 也能夠選擇 此次什麼都不選擇
出現獲取受權碼點擊 試用受權
出現界面 點擊你須要選擇的服務 填寫團隊名稱 點擊肯定
肯定後會出現IP檢測 點擊yes便可
網址會自動跳轉到 受權碼界面 點擊下一步
會出現 設置數據庫選擇本身的數據庫選擇 mysql
設置好 ip地址 和數據庫名字密碼
若是設置數據庫出現如下錯誤請按照官方填寫
在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
點擊測試數據庫出現成功 點擊下一步 須要等待一分鐘
出現如下內容可自行配置
總結:本文先建立帶文件的mysql容器從mysql容器拷貝my.cnf文件再次去拉起容器和映射文件重啓mysql