Docker部署Atalssian全套软件
翻了全网对 Atlassian 软件(crowd, jira, confluence)的安装教程都是上古版本。其实官方提供了非常方便的 Docker 镜像,但说明文档中仅提供了单独的 docker run 命令。 在此提供一份整合了数据库 docker-compose 文件,实现快速部署,同时补充了优化参数。编写时软件的最新版本为 Jira9.9 和 Confluence8.3。
编写 docker-compose.yml
文件
优化参数说明
挂载破解文件路径
创建
/opt/agent
文件夹,在 yml 文件中的 volumes 部分添加- /opt/agent:/opt/agent
。使用nginx反代时需添加的参数
若使用反向代理工具如 nginx,需要在 yml 文件中的 environment 部分添加以下参数:
ATL_PROXY_NAME
、ATL_PROXY_PORT
、ATL_TOMCAT_SCHEME
、ATL_TOMCAT_SECURE
。若不使用,可以删掉或注释掉。设置容器和软件默认的时区
在 yml 文件中的 environment 部分添加
- TZ=Asia/Shanghai
,以及- JVM_SUPPORT_RECOMMENDED_ARGS=-Duser.timezone=Asia/Shanghai
。扩大JVM内存资源上限
当用户和内容增多之后,JVM内存资源不足会导致软件运行缓慢。此时可以通过扩大JVM内存资源上限来解决,当然也要看服务器的硬件资源是否足够。具体调整参数详见样例文件的中的
JVM_MINIMUM_MEMORY
、JVM_MAXIMUM_MEMORY
、JVM_RESERVED_CODE_CACHE_SIZE
。 如果是初次使用,可以先删掉或注释掉,等到需要时再调整。设置Confluence字体文件路径
在准备放置
docker-compose.yml
文件的目录下创建fonts
文件夹,将字体文件放入其中。 在 yml 文件中的 volumes 部分添加- ./fonts:/usr/local/share/fonts
。集成 PostgreSQL 数据库
tipAtlassian 因授权限制默认不集成 mysql 驱动,因此使用 PostgreSQL 数据库,截止目前(2023.06),支持到 PostgreSQL 14。
docker-compose.yml
样例
注意修改以下带有注释的参数。
version: '3.8'
services:
jira:
image: atlassian/jira-software
container_name: jira
depends_on:
- dbjira
ports:
- 8080:8080
volumes:
- jiraVolume:/var/atlassian/application-data/jira
- /opt/agent:/opt/agent
environment:
- ATL_PROXY_NAME=jira.homelab.wang # 更改为自己的域名
- ATL_PROXY_PORT=443
- ATL_TOMCAT_SCHEME=https
- ATL_TOMCAT_SECURE=true
- ATL_JDBC_URL=jdbc:postgresql://dbjira:5432/jira
- ATL_JDBC_USER=jira
- ATL_JDBC_PASSWORD="password" # 这里的密码要和数据库的密码一致
- ATL_DB_TYPE=postgres72
- ATL_DB_DRIVER=org.postgresql.Driver
- TZ=Asia/Shanghai
- JVM_MINIMUM_MEMORY=1024m # 默认为384m,视实际情况调整
- JVM_MAXIMUM_MEMORY=2048m # 默认为768m,视实际情况调整
- JVM_RESERVED_CODE_CACHE_SIZE=1024m # 默认为512m,视实际情况调整
- JVM_SUPPORT_RECOMMENDED_ARGS=-Duser.timezone=Asia/Shanghai
restart: always
confluence:
image: atlassian/confluence
container_name: confluence
depends_on:
- dbconf
ports:
- 8090:8090
- 8091:8091
environment:
- ATL_PROXY_NAME=conf.homelab.wang # 更改为自己的域名
- ATL_PROXY_PORT=443
- ATL_TOMCAT_SCHEME=https
- ATL_TOMCAT_SECURE=true
- ATL_JDBC_URL=jdbc:postgresql://dbconf:5432/conf
- ATL_JDBC_USER=conf
- ATL_JDBC_PASSWORD="password" # 这里的密码要和数据库的密码一致
- ATL_DB_TYPE=postgresql
- TZ=Asia/Shanghai
- JVM_MINIMUM_MEMORY=2048m # 默认为1024m,视实际情况调整
- JVM_MAXIMUM_MEMORY=4096m # 默认为1024m,视实际情况调整
- JVM_RESERVED_CODE_CACHE_SIZE=512m # 默认为256m,视实际情况调整
- JVM_SUPPORT_RECOMMENDED_ARGS=-Duser.timezone=Asia/Shanghai
- CATALINA_OPTS=-Dconfluence.document.conversion.fontpath=/usr/local/share/fonts/
volumes:
- confluenceVolume:/var/atlassian/application-data/confluence
- /opt/agent:/opt/agent
- ./fonts:/usr/local/share/fonts
restart: always
dbjira:
image: docker.io/bitnami/postgresql:14
ports:
- '5432:5432' # 如果不打算暴露数据库端口,可以注释掉
volumes:
- 'dbjira_data:/bitnami/postgresql'
environment:
- POSTGRESQL_USERNAME=jira
- POSTGRESQL_DATABASE=jira
- POSTGRESQL_PASSWORD="password" # 请设置为自己的密码
restart: always
dbconf:
image: docker.io/bitnami/postgresql:14
ports:
- '6432:5432' # 如果不打算暴露数据库端口,可以注释掉
volumes:
- 'dbconf_data:/bitnami/postgresql'
environment:
- POSTGRESQL_USERNAME=conf
- POSTGRESQL_DATABASE=conf
- POSTGRESQL_PASSWORD="password" # 请设置为自己的密码
restart: always
volumes:
dbjira_data:
dbconf_data:
jiraVolume:
confluenceVolume:
破解
宿主机配置
安装 Java
由于宿主机使用了minimal安装,没有自带Java。若系统中已有,可以跳过该步。
dnf install java-17-openjdk
上传破解工具到宿主机和容器
tip上传破解文件到
/opt/agent/
。在 yml 文件中,我们映射了宿主机和容器内相同的存放位置,方便后续配置Java变量。配置Java环境变量
将下面的内容添加到宿主机和容器内的全局变量,添加到
/etc/profile
里。vim /etc/profile
添加内容export JAVA_OPTS="-javaagent:/opt/agent/atlassian-agent.jar ${JAVA_OPTS}"
生效配置
重启或运行以下命令。
source /etc/profile
容器内配置
进入容器
# 进入 jira 容器
docker exec -it jira /bin/bash
# 进入 Confluence 容器
docker exec -it confluence /bin/bash安装
vim
工具由于要在容器内添加 Java 环境变量,先安装 vim 编辑工具
apt update
apt install vim编辑
setenv.sh
文件vim /opt/atlassian/jira/bin/setenv.sh
vim /opt/atlassian/confluence/bin/setenv.sh在末尾添加该行
export JAVA_OPTS="-javaagent:/opt/agent/atlassian-agent.jar ${JAVA_OPTS}"
退出容器
exit
重启容器
info完成前两步后,需要重启容器,让环境变量生效,才能进行下一步。
docker restart jira
docker restart confluence
计算破解码
以下命令中:
jira
,conf
,crowd
是对应的应用名。-m
为邮箱,-n
为用户名,-o
为网址,可任意填写。-s
为许可编号,根据输入秘钥界面的提示填入。
java -jar /opt/agent/atlassian-agent.jar -d -p jira -m admin@homelab.wang -n admin -o https://homelab.wang -s BXAY-7KCQ-MXW2-K6D8
版本升级
docker compose pull
docker compose up -d
过程的参考文档