Docker 部署 Atlassian Confluence 搭建企业Wiki

公司企业wiki就是使用Confluence搭建的,产品研发过程中的需求文档、产品设计文档、项目管理文档、技术文档、运维文档等等都统一发布在wiki中,并不断地迭代维护。所以想着自己的协同的办公也可使用Confluence来实现。

一开始是通过非容器的形式部署Confluence,但是过程稍显繁杂,后面从运维那得知Docker中有Confluence的镜像,一切就变得简单了。


  • 环境:CentOS7.2
  • 容器:Docker
  • 镜像:atlassian/confluence-server
  • 辅助:Mysql

在一切开始之前先启动我们的CentOS7.2,然后再启动Docker,因为后面mysql和confluence的安装和部署全部是在Docker中完成(CentOS系统、Docker的安装和使用可以查看博主相关的博文)

下面是启动docker的指令

[root@centos7-1 ~]# systemctl start docker

一.安装并配置Mysql

建议重新安装mysql,博主在部署完confluence使用现有的mysql时出现了各种问题,主要出在配置文件上,但是配置文件的内容适用于博主的以往的其他服务,在不影响以往服务和数据的前提下,博主选择重新安装并配置mysql。

1.搜索mysql镜像

[root@centos7-1 ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   8474                [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   2923                [OK]                
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   626                                     [OK]
percona                           Percona Server is a fork of the MySQL relati…   441                 [OK]                
centurylink/mysql                 Image containing mysql. Optimized to be link…   60   
...

2.拉取镜像

[root@centos7-1 ~]# docker pull mysql:5.7

3.查看镜像

[root@centos7-1 ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
mysql                         5.7              2151acc12881        2 weeks ago         445MB

4.创建映射数据目录和配置设置

[root@centos7-1 ~]# mkdir -p /export/config/mysql
[root@centos7-1 ~]# touch /export/config/mysql/mysqld.cnf
[root@centos7-1 ~]# mkdir -p /export/data/mysql
[root@centos7-1 ~]# vi /export/config/mysql/mysqld.cnf

mysqld.cnf配置的内容如下(前面一部分是mysql默认的配置内容,后面7行配置时confluence官网指定的自定义配置),直接粘贴复制到mysqld.cnf文件即可

# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8
collation-server=utf8_bin

default-storage-engine=INNODB

max_allowed_packet=256M

innodb_log_file_size=2GB

transaction-isolation=READ-COMMITTED

binlog_format=row

5.启动mysql

[root@centos7-1 ~]# docker run --name mysql8 -p 3306:3306 -v /export/config/mysql8/mysqld.cnf:/etc/mysql/my.cnf -v /export/data/mysql8:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

6.查看mysql容器

[root@centos7-1 ~]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                     PORTS                               NAMES
a948c9eb4389        mysql                         "docker-entrypoint.s…"   8 minutes ago       Up 8 minutes               0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8

7.进入mysql容器

[root@centos7-1 ~]# docker exec -it mysql bash
root@a948c9eb4389:/# 

8.登录mysql

root@a948c9eb4389:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

在上面的过程中需要输入密码,密码为启动容器时设定的密码123456

9.设置root用户

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1Aa@11';
Query OK, 0 rows affected (0.51 sec)

mysql> 

安全考虑,设置root用户只能本地登录

10.添加登录用户

mysql> CREATE USER 'zaomianbao'@'%' IDENTIFIED WITH mysql_native_password BY '1Aa@11';
Query OK, 0 rows affected (0.02 sec)

mysql> 

11.设置允许远程登录

mysql> GRANT ALL PRIVILEGES ON *.* TO 'zaomianbao'@'%';          
Query OK, 0 rows affected (0.01 sec)

mysql> 

12.刷新权限

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> 

13.客户端远程连接mysql

在这里插入图片描述

二.部署并配置Confluence

1.搜索、拉取、查看confluence镜像

[root@centos7-1 ~]# docker search confluence
NAME                                       DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
atlassian/confluence-server                Official Confluence Server image – create, o…   319                                     [OK]
blacklabelops/confluence                   Dockerized Atlassian Confluence                 41                                      [OK]
derjudge/confluence                        A batteries-included image for running Atlas…   12                                      [OK]
goellnerit/confluence-docker                                                               8                                       [OK]
...
[root@centos7-1 ~]# docker pull atlassian/confluence-server
...
[root@centos7-1 ~]# docker images 
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
atlassian/confluence-server   latest              8e02e7d24a38        1 minites ago         822MB
...

2.启动confluence

[root@centos7-1 ~]# mkdir /export/data/confluence
[root@centos7-1 ~]# docker run -v /export/data/confluence/:/var/atlassian/application-data/confluence/ --name="confluence" -d -p 8090:8090 -p 8091:8091 atlassian/confluence-server
e6b421dc43d352f1e1f57a4d50d8cdd8441683bfc087d99829753ad1bea0ee67
[root@centos7-1 ~]# 

3.查看confluence容器状态

[root@centos7-1 ~]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                   PORTS                               NAMES
e6b421dc43d3        atlassian/confluence-server   "/tini -- /entrypoin…"   40 seconds ago      Up 38 seconds            0.0.0.0:8090-8091->8090-8091/tcp    confluence
a948c9eb4389        mysql                         "docker-entrypoint.s…"   48 minutes ago      Up 48 minutes            0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8

上面显示"Up 38 seconds",已运行38秒,代表容器正常启动了

4.破解confluence

a.下载相关jar文件

[root@centos7-1 ~]# mkdir -p /export/software
[root@centos7-1 ~]# cd /export/software/
[root@centos7-1 software]# wget http://cdn-blog.oss-cn-beijing.aliyuncs.com/k2p-frp/atlassian-extras-decoder-v2-3.2.jar
[root@centos7-1 software]# wget http://cdn-blog.oss-cn-beijing.aliyuncs.com/k2p-frp/atlassian-universal-plugin-manager-plugin-2.22.jar
[root@centos7-1 software]# ls
atlassian-universal-plugin-manager-plugin-2.22.jar  atlassian-extras-decoder-v2-3.2.jar

b.进入confluence容器

[root@centos7-1 software]# cd
[root@centos7-1 ~]# docker exec -it confluence bash
root@e6b421dc43d3:/var/atlassian/application-data/confluence# 

c.用下载的文件替换confluence中的atlassian-extras-decoder-v2-xxx.jar/atlassian-universal-plugin-manager-plugin-xxx.jar文件

先备份confluence中原先的jar,这里是将2个jar移至mnt目录下

root@e6b421dc43d3:/var/atlassian/application-data/confluence# mv /opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar /mnt/
root@e6b421dc43d3:/var/atlassian/application-data/confluence# mv /opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/atlassian-universal-plugin-manager-plugin-3.0.1.jar /mnt/

备份好文件后,退出confluence容器。拷贝下载的文件到confluence容器中

root@e6b421dc43d3:/var/atlassian/application-data/confluence# exit
exit
[root@centos7-1 ~]# cd /export/software/
[root@centos7-1 software]# docker cp atlassian-extras-decoder-v2-3.2.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/
[root@centos7-1 software]# docker cp atlassian-universal-plugin-manager-plugin-2.22.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins/

重新启动confluence

[root@centos7-1 software]# cd
[root@centos7-1 ~]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                   PORTS                               NAMES
e6b421dc43d3        atlassian/confluence-server   "/tini -- /entrypoin…"   48 minutes ago      Up 48 minutes            0.0.0.0:8090-8091->8090-8091/tcp    confluence
a948c9eb4389        mysql                         "docker-entrypoint.s…"   2 hours ago         Up 2 hours               0.0.0.0:3306->3306/tcp, 33060/tcp   mysql8
[root@centos7-1 ~]# docker restart e6b421dc43d3
e6b421dc43d3
[root@centos7-1 ~]# 

5.设置confluence

a.浏览器访问confluence(ip:port)在这里插入图片描述

b.语言设置

在这里插入图片描述
选完"中文"后,点击”Next“

c.选择"产品安装"

在这里插入图片描述

d.点击下一步,直到显示出该页面

在这里插入图片描述

e.点击"获取试用授权"

在这里插入图片描述

f.进入到该页面后按照图示选择,最后点击"Generate License"

在这里插入图片描述

g.进入到下面的页面后等待一段时间会弹窗确认ip

在这里插入图片描述

h.点击"Yes"后会跳回到授权码页面,点击"下一步"即可

在这里插入图片描述

i.选择"我自己的数据库",点击"下一步"

在这里插入图片描述

j.你会看到以下画面,选择你自己的数据库即可,博主的是Mysql在这里插入图片描述

切换成Mysql会显示出以下画面
在这里插入图片描述

k.下载mysql连接驱动,并将其复制到confluence的/opt/atlassian/confluence/confluence/WEB-INF/lib目录下

这里下载就省略了,大家自行找到对应的驱动下载即可,如果本地有maven的仓库,直接使用即可

[root@centos7-1 ~]# cd /export/software/
[root@centos7-1 software]# ll
-rw-r--r--. 1 root root    960372 7月  26 17:50 mysql-connector-java-5.1.34.jar
-rw-r--r--. 1 root root   1007502 7月  26 16:51 mysql-connector-java-5.1.47.jar
-rw-r--r--. 1 root root   2132635 7月  26 17:02 mysql-connector-java-8.0.13.jar
[root@centos7-1 software]# docker cp mysql-connector-java-8.0.13.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/
[root@centos7-1 software]# 

l.重启confluence

[root@centos7-1 software]# docker restart confluence 
confluence
[root@centos7-1 software]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                   PORTS                               NAMES
e6b421dc43d3        atlassian/confluence-server   "/tini -- /entrypoin…"   2 hours ago         Up 5 seconds             0.0.0.0:8090-8091->8090-8091/tcp    confluence

m.浏览器刷新刚才的页面会看到下面的画面

在这里插入图片描述

n.创建confluence数据库

在这里插入图片描述
注意这里需要时utf-8的编码

o.回到浏览器,填写参数,测试连接,点击"下一步"

在这里插入图片描述

p.选择"示范站点"

在这里插入图片描述

q.选择配置用户和组

在这里插入图片描述

r.填写管理员账号信息

在这里插入图片描述

s.点击"开始"

在这里插入图片描述

t.创建空间

在这里插入图片描述

u.可以直接跳过,再点击左上角的"Confluence"图片即可到达首页

在这里插入图片描述

v.首页如下

在这里插入图片描述

w.用户语言设置,点击右上角的头像 – 选择"Settings"

在这里插入图片描述

x.点击"edit"

在这里插入图片描述

y.选择中文

在这里插入图片描述

z.再回到首页,你就熟悉了

在这里插入图片描述

三.授权信息查询

选择右上方"齿轮图标" —— 选择”一般设置“ —— 拉倒最下面,左侧目录选择"授权细节"
在这里插入图片描述
可以看到破解成功!

三.总结

到这里整个搭建部署的过程就结束了,后面的使用过程大家可以自己摸索。在整个搭建的过程中遇到了一些问题,在这里整理一下。

  • Mysql数据库只支持到5.7,再往后会报错,报错原因应该是代码不兼容,看了confluence的日志,代码直接抛出了该异常,再不懂源码的情况下只能从8.0切回5.7的数据库
    在这里插入图片描述
  • confluence要求的内存和磁盘较高,需要给足空间,在日志中可以看到警告
    在这里插入图片描述
    在这里插入图片描述
  • 还有一些版本上的小问题,大家只要细心应对即可

如果问题可在博客下方留言。