docker下jira+confluence安装集成

环境准备

阿里云ECS主机

阿里云RDS mariadb10.3

此处的深坑:jira无法连接阿里云的polardb,应该是mysql连接器的事情,但是没有找到合适的连接器,暂时放弃掉。

安装完成docker及docker-compose,下载镜像

cptactionhank/atlassian-jira-software:8.1.0

cptactionhank/atlassian-confluence:latest

phpmyadmin/phpmyadmin:latest,用于管理MYSQL数据库

nginx:latest,用nginx做反向代理(此处有隐患,后面描述,在二次安装的时候,抛开了nginx)

数据库先建库

注意字符集,jira的字符集为:utf8mb4,confluence的字符集为:utf8-bin

jira和confluence安装在同一宿主机,以换取集成的方便性。

各种破解所需工具和文件

jira破解包:atlassian-extras-3.2.jar

confluence破解程序:confluence_keygen.jar

这次安装,建立三个docker-compose.yml,把三个容器分别拉起,这个时候需要先建立一个network,使用bridge模式

安装过程

docker network create -d bridge jira-wiki

安装jira

mkdir /opt/jiar_confluence
vi docker-compose.yml

内容如下

version: '2'
services:
        nginx:
                image: nginx:latest
                container_name: nginx
                restart: always
                links:
                        - jira:jira
                        - confluence:confluence
                ports:
                        - 8080:8080
                        - 8090:8090
                        - 8091:8091
                        - 8088:80
                volumes:
                        - /etc/localtime:/etc/localtime:ro
                        - /var/run/docker.sock:/var/run/docker.sock
                        - /opt/jira_confluence/nginx-etc:/etc/nginx
                        - /var/tmp/nginx:/var/log/nginx

networks:
        default:
                external:
                        name: jira-wiki 
version: '2'
services:
        jira:
                image: cptactionhank/atlassian-jira-software:8.1.0
                container_name: jira
                user: root:root
                mem_limit: 20480m
                restart: always
                volumes:
                        - /etc/localtime:/etc/localtime:ro
                        - /var/tmp/jira:/var/atlassian/jira/log
                        - /var/tmp/jira-tomcat:/opt/atlassian/jira/logs
                        - /opt/jira_confluence/jira/setenv.sh:/opt/atlassian/jira/bin/setenv.sh
​ networks:
        default:
                external:
                        name: jira-wiki 

注意:version一定要用2,可以在容器使用mem_limit限定内存使用量,对于JAVA应用来说,这是保证宿主机不宕机的基本保护。

随便拉起一个jira容器

mkdir /opt/jira_confluence/jira
cd /opt/jira_confluence/jira
docker cp base-jira/opt/atlassian/jira/bin/setenv.sh ./

编辑setenv.sh,JVM虚拟机内存使用,时区

JVM_MINIMUM_MEMORY="8192m"
JVM_MAXIMUM_MEMORY="16384m"
JVM_REQUIRED_ARGS='-Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true -Dorg.dom4j.factory=com.atlassian.core.xml.InterningDocumentFactory -Duser.timezone=Asia/Shanghai'

将nginx的代理设定好,在nginx.conf内设定upstream段,在./conf.d/default.conf设定proxy_pass段

示例如下:

upstream jira {
        server jira:8080; # 此处的jira,就是docker-compose中的对应services名称
    }
server {
    listen       8080;
    server_name  域名;
    #charset koi8-r;
    access_log  /var/log/nginx/jira.access.log  main;
​
    location / {
        proxy_pass http://jira; # 此处的jira,就是upstream处定义的名称
        proxy_set_header    Host $host:$server_port;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect off;
        proxy_connect_timeout   150;
        proxy_send_timeout  100;
        proxy_read_timeout  100;
        proxy_buffers       4 32k;
        client_max_body_size    64M; # 如果有大文件上载,此处需要修订
        client_body_buffer_size 512K;
    }
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
​
}

启动jira安装程序

docker-compose up -d

访问:域名:8080,进入jira安装页面

页面右上角选择语言为中文,选择我将设置他自己

下一步设置数据库连接,测试通过后,点击下一步

serverID保存

点击生成jira使用许可证

选择jira software (server)

写入serverID

点击生成授权码

点击yes

回到安装页面,点击下一步

创建admin账户,邮件部分选择以后再说。

将破解文件拷贝到容器内

docker cp atlassian-extras-3.2.jar jira:/opt/atlassian/jira/atlassian-jira/WEB-INF/lib

重启容器

docker restart jira

登陆jira>>右上角设置按钮>>应用程序,查看许可证信息。

安装confluence

随便拉起一个confluence容器,将setenv.sh拷贝出来

mkdir /opt/jira_confluence/confluence
cd /opt/jira_confluence/confluence
docker cp base-jira/opt/atlassian/jira/bin/setenv.sh ./
vi setenv.sh

修改

CATALINA_OPTS="-Xms8192m -Xmx16384m -XX:+UseG1GC ${CATALINA_OPTS}"
CATALINA_OPTS="-Duser.timezone=GMT+08" 
CATALINA_OPTS="-Dconfluence.document.conversion.fontpath=/usr/share/fonts/msttcore/ ${CATALINA_OPTS}"

准备windows字体

将C:\windows\fonts* 上传至服务器windowsfonts目录

如同上面的nginx反向代理配置,修改nginx配置文件。

新建一个docker-compose.yml

补充如下内容:

version: '2'
services: 
        confluence:
                image: cptactionhank/atlassian-confluence:latest
                container_name: confluence
                user: root:root
                mem_limit: 20480m
                restart: always
                volumes:
                        - /etc/localtime:/etc/localtime:ro
                        - /opt/jira_confluence/confluence/setenv.sh:/opt/atlassian/confluence/bin/setenv.sh
                        - /opt/jira_confluence/windowsfonts:/usr/share/fonts/msttcore
 networks:
        default:
                external:
                        name: jira-wiki

启动容器

docker-compose.yml

检查confluence容器内,有没有/use/share/fonts/msttcore目录,目录内有没有字体内容,如果没有,则进入confluence容器,建立/usr/share/fonts/msttcore目录,然后stop容器,再start容器,不要使用restart

开始安装confluence

访问域名:8090

语言选择中文

选择产品安装,点击下一步

页面上连个选择框都勾选,点击下一步

停留在该页面,将serverID记录下来

在服务器上,将需要破解的文件拷贝出来

docker cp confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar ./atlassian-extras-2.4.jar

在一台安装了java的windows主机上,把atlassina-extras-2.4.jar从服务器拷贝下来,执行java -jar confluence_keygen.jar,在窗口内输入serverID,点选.patch,选择刚才的jar文件,会生成破解文件,点选生成.gen,会生成KEY

将破解后的jar文件,上传至服务器,并拷贝进入容器

docker cp ./atlassian-extras-2.4.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar

然后重新启动容器:docker restart confluence

访问域名:8090,将刚才生成的KEY填入,点击下一步

然后选择数据库相关信息,就可以了。

注意:数据库需要设置隔离级别:transaction-isolation=READ-COMMITTED

confluence集成jira

confluence安装时,会有选择自建账号还是与jira集成,点击与jira集成。

填入jira的访问地址,呼应开头的深坑:使用http://jira:8080,即可访问,切记不要通过nginx代理的域名+端口访问。

填入jira的超级管理员用户名/密码

切记:勾选confluence超级用户组和普通用户组权限

教训

踩完坑,强烈建议nginx,jira,confluence使用三个不同的docker-compose.yml,在宿主机建立一个bridge网络,联通三个容器即可。

破解完后,所有容器采用restart命令启动,切记不可使用docker-compose restart。

nginx配置https反向代理jira和confulunce的补充。(排除所有坑)

nginx.conf内容
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  65535;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;


   
    
## added by zhaosanbao
   proxy_connect_timeout 300; #单位秒 
   proxy_send_timeout 300; #单位秒 
   proxy_read_timeout 300; #单位秒 


   upstream wiki {
   server 172.31.0.100:8090;
}
   upstream wikisyn {
   server 172.31.0.100:8091;
 ## 此处特别重要。
}
   upstream jira {
   server 172.31.0.200:8080;
}
conf.d下的配置
jira.conf内容:

server {
    listen       80;
    listen  [::]:80;
    server_name  jira的域名;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        return 301 https://$host$request_uri;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    }

server {
    listen 443 ssl http2;
    server_name jira的域名;
    ssl_certificate cert/xxx.pem;
    ssl_certificate_key cert/xxx.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;

location / {
        proxy_pass http://jira/;
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_connect_timeout  150;
        proxy_pass_request_headers on;
        proxy_send_timeout 100;
        proxy_buffers    4 32k;
        client_max_body_size  64M;
        client_body_buffer_size 256K;
 }

}


wiki.conf的内容:
server {
    listen       80;
    listen  [::]:80;
    server_name  wiki的域名;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        return 301 https://$host$request_uri; 
   }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    }

 server {
    listen 443 ssl http2;
    server_name wiki的域名;
    ssl_certificate cert/xxxxxx.pem;
    ssl_certificate_key cert/xxxxxx.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;

location / {
        proxy_pass http://wiki/;
        proxy_set_header  Host $host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass_request_headers      on;
        proxy_connect_timeout  150;
        proxy_send_timeout 100;
        proxy_buffers    4 32k;
        client_max_body_size  64M;
        client_body_buffer_size 256K;
 }
location /synchrony {
              proxy_set_header X-Forwarded-Host $host;
              proxy_set_header X-Forwarded-Server $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass http://wikisyn/synchrony;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection “Upgrade”;
        }

}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注