使用Docker Compose搭建 Confluence的教程

本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2019年03月30日
统计字数: 5170字
阅读时间: 11分钟阅读
本文链接: https://soulteary.com/2019/03/30/construct-confluence-with-docker.html


使用 Docker 搭建 Confluence

小型团队协同,或者想花钱买个省心,Confluence 是比较好的选择之一。但是最近安装 Confluence ,发现官方和网上的安装介绍都比较“落后”低效,所以有了本篇内容。

本文将介绍如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看过之前的内容,跟随本文应该能在十分钟内解决战斗。

基础准备

  • Docker Hub 上官方容器镜像:https://hub.docker.com/r/atlassian/confluence-server/tags

这里会讲解两个有代表性的版本: 6.46.15

  • MySQL JDBC Connector : https://dev.mysql.com/downloads/connector/j/5.1.html

如果你也选择使用 MySQL 作为储存后端,需要下载此文件,一般情况下你会获得 mysql-connector-java-5.1.47.tar.gz 的压缩包,解压缩之后,获得 mysql-connector-java-5.1.47.jar,我们稍后会用到。

针对老版本软件的使用

先说老版本,如果你只是需要基础的 Wiki 功能,那么下面的配置文件应该能够满足你的需求。

version: '3'

services:

  confluence:
    image: atlassian/confluence-server:6.4.3-alpine
    expose:
      - 8090
      - 8091
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=Host:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
    volumes:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar

networks:
  traefik:
    external: true

将上面的文件保存为 docker-compose.yml 后,我们创建另外基础配置文件 **.env **,和上面的配置一样简单,文件内容可以是下面这样。

DOMAIN=wiki.lab.com

docker-compose.yml.envmysql-connector-java-5.1.47.jar 放在同一目录,如果此刻你的 Traefik 已经就绪,那么执行 docker-compose up ,你的服务便启动起来了。

直接访问你配置好的域名,比如例子中的 wiki.lab.com,你就可以进行 Confluence 的 Web 界面配置啦。如果你还不会使用 Traefik ,那么可以翻阅历史文章,同样是一些十分钟以内的教程。

如果你选择将 Confluence 部署在公网,面对每天很是烦人的扫描器,不妨简单添加 Basic Auth 认证,将这些恶意请求拦截在外面。

因为使用了 Traefik ,所以添加这个功能十分简单,只需要两步:

第一步,在 docker-compose.ymllabels 字段内添加下面的内容。

- "traefik.frontend.auth.basic=${BASIC_AUTH}"

第二步,执行 htpasswd -nb user user,得到一段包含用户名和加密后的密码的文本字符串,譬如这样:user:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41,接着将内容添加到 .env 中:

BASIC_AUTH=user:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41

当再有扫描器想直接对应用进行扫描的时候,就会被 Basic Auth 挡在外面啦。

应用健康检查报错

当你安装完毕,开始使用的时候,会发现界面的右上角会提示一个警告信息。

Can't check base URL

官方知识库中有提到这个问题,如果你使用的也是低版本(6.6)之前,其实可以通过配置 Hosts 来解决问题。

比如在 docker-compose.yml 中添加一段声明,让应用服务器查找本机上应用地址,而非一定要访问公网地址的应用,参考配置如下:

version: '3'

services:

  confluence:
    image: atlassian/confluence-server:6.4.3-alpine
    expose:
      - 8090
      - 8091
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=Host:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
    volumes:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar
    extra_hosts:
      - "${DOMAIN}:127.0.0.1"

networks:
  traefik:
    external: true

是不是十分简单,如果你的需求是基础使用,上述的配置应该已经能够满足你的需求了。

针对新版本软件的使用

接着我们聊聊如何使用最新版本的软件,因为我们使用了容器,所以更新版本十分简单,在配置文件中修改镜像的版本号就好了。比如,我想将 6.4.3 这个低版升级到其他版本,只需要将配置中的 6.4.3 改为 6.15.1 即可,例如 atlassian/confluence-server:6.15.1-alpine

其他的基本和老版本软件使用一致。不过这里会有几个小问题,需要额外解决一下。

数据库不能正确连接

WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

要解决这个问题,可以选择配置加密的 MySQL 连接,并更新容器中的证书,也可以选择添加参数,关闭强制使用加密连接请求,后者更简单,如果要求不高,可以这么做。

编辑 data/confluence.cfg.xml 文件中的 hibernate.connection.url ,在连接地址后添加 ?useSSL=false 参数,重启应用即可。

Traefik Basic Auth 和 Tomcat 发生联动

新版本的软件逻辑中,有针对请求中带有 Basic Auth 进行额外处理:如果在上面配置了 Basic Auth ,那么应用会提示验证失败,不能登录系统。

这个显然不是我们添加 Basic Auth 的用意,并且实际使用中,也不推荐直接将 Confluence 的认证接口对外。

解决方案很简单,在 docker-compose.yml 中添加一行 - "traefik.frontend.auth.basic.removeHeader=true" ,Traefik 的验证信息将仅针对 Traefik 使用,在反向代理应用的时候,HTTP 请求中的验证信息会被删除掉。

同样的,重启应用,这个问题就解决了。

稍微麻烦一些的健康检查

因为我们使用 Traefik 挂载证书,应用实际运行在代理服务器背后,当使用管理员访问控制台,会看到一个警告信息。

您的 URL 不匹配

Confluence 的基本URL设置为http://wiki.lab.com,但您正从https://wiki.lab.com访问 Confluence。

考虑应用的正常使用,我们通常会将协议进行修正,比如将站点基础URL修正为 https 。但是在修正之后,你会收到另外一个警告。

Tomcat 配置不正确

Tomcat server.xml 配置不正确:
scheme 应为 ‘https'
proxyName 应为 ‘YOUR_DOMAIN_URI'
proxyPort 应为 ‘443'

原因是比较新的版本的应用,健康检查逻辑附带了端口和协议判断,低版本可以直接使用 Traefik 反代挂载证书的幸福快乐日子一去不复返。

解决问题需要分为三步。

第一步,将容器内的 Tomcat 运行配置 server.xml 拷贝到本地(da5582a01879 为 docker ps 获取的容器PID)。

docker cp da5582a01879:/opt/atlassian/confluence/conf/server.xml .

第二步,将配置中端口为 8090 的 Connector 的配置更新为下面的内容(尤其注意最后一行内容):

<Connector
    port="8090"
    connectionTimeout="20000"
    redirectPort="8443"
    maxThreads="48" minSpareThreads="10"
    enableLookups="false"
    acceptCount="10"
    debug="0"
    URIEncoding="UTF-8"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    proxyName="wiki.lab.com" proxyPort="443" scheme="https"/>

第三步,更新 docker-compose.yml 配置文件。

volumes 字段中添加内容:

- ./server.xml:/opt/atlassian/confluence/conf/server.xml

同时删除 extra_hosts 字段内容。

重启应用,一切正常。

完整的配置文件

为了方便使用,这里给出完整的参考配置。

version: '3'

services:

  confluence:
    image: atlassian/confluence-server:6.15.1-alpine
    expose:
      - 8090
      - 8091
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=Host:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.frontend.auth.basic.removeHeader=true"
      - "traefik.frontend.auth.basic=${BASIC_AUTH}"
    volumes:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar
      - ./server.xml:/opt/atlassian/confluence/conf/server.xml

networks:
  traefik:
    external: true

最后

虽然对于团队来说 Confluence 是一个不错的方案,但是实际针对个人/拥有定制能力的团队而言,使用完全开源免费的 WordPress 或许会更好,下一篇我将介绍 WordPress 用作知识管理用途的一些定制处理。

以上就是使用 Docker 搭建 Confluence的详细内容,更多关于Docker 搭建 Confluence的资料请关注我们其它相关文章!

时间: 2021-06-09

简简单单使用Docker部署Confluence

一.环境要求 1.已安装docker17及以上版本 二.容器运行 docker run -d --name confluence -p 8090:8090 --user root:root cptactionhank/atlassian-confluence 然后等待镜像拉取 启动完成之后,直接浏览器访问: http://${Server}:8090/ 下面看下Docker 部署Confluence15.2 一.数据库准备数据库版本:5.7 这里数据库并没有采用docker镜像方式,而是选择已有

利用docker-compose搭建AspNetCore开发环境

使用docker-compose搭建AspNetCore开发环境 1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上监听一个端口就可以了,不污染主机.再组合各Web程序.Redis/Memcached.SqlServerOnLinux. 新建一个目录sites,所有和集群相关的都放在这里,目录结构如下所示 sites     nginx      

使用dockercompose搭建springboot-mysql-nginx应用

上篇使用docker构建spring-boot应用,是把编译好的jar包构建到镜像中. 这篇是把spring-boot连同数据库,做为一组docker服务运行起来. 这里只是把自己操作记录下来,完整运行的代码见"参考"中的引用1中的内容. (我修改mysql映射目录及获取远程ip的方法) 主要步骤: 搭建简单的springboot应用 应用添加docker下支持 编写dockercompose配置文件 实践运行 搭建简单的springboot应用 做一个web应用,统计访问该站点的ip

在Docker中部署Confluence和jira-software的方法步骤

version: centos==7.2 jdk==1.8 confluence==6.15.4 jira-software==8.2.1 docker==18.09 安装前提示: 1. 需要准备2个数据库,因为confluence和jira-software的mysql配置要求不一样     2. confluence需要配置jdk,jira-software自带jdk 选择使用docker部署的原因: 1. confluence和jira-software环境需求不同,需要分开配置.    

使用docker compose搭建一个elk系统的方法

找了不少使用 docker-elk 搭建的博客, 英文的阅读吃力不说, 镜像源也是慢的让人头皮发麻, 因此重新编排了一个docker-compose,源都是从 https://hub.docker.com/ 上找的, 即使拉的国内镜像源应该也能很好的支持了吧? 环境 Docker 18.06.0-ce docker-compose 1.22.0 给每个容器最少分配 1G 的内存 软件版本 logstash: 5.* elasticsearch: 5.* kibana: 5.* 启动前的配置 在各

docker部署confluence的完整步骤

Confluence 是收费的,但是可以破解使用(提倡购买,支持正版) 本文使用的镜像是基于他人(镜像&破解)打包的,本文的镜像是直接将破解文件置入容器了,省去了自己去捣鼓破解的 jar 包文件的过程,容器部署启动后即可访问. 整个过程请按照以下步骤进行: 1. 数据库创建 先创建文件 /opt/soft/mysql8-confluence/conf.d/custom.cnf,内容为: [mysqld] default-authentication-plugin=mysql_native_pas

Spring Boot利用Docker快速部署项目的完整步骤

1.简介 建议阅读本文最好对Dokcer有一些了解 首先我们先了解一下Docker是什么 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就会生成一个虚拟容器.程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样.有了 Docker,就不用担心环境问题. 总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器.

基于docker安装tensorflow的完整步骤

前言 google又一次成为大家膜拜的大神了.google大神在引导这机器学习的方向. 同时docker 也是一个非常好的工具,大大的方便了开发环境的构建,之前需要配置安装. 最近在自学机器学习,大热的Tensorflow自然不能错过,所以首先解决安装问题,为了不影响本地环境,所以本文基于Docker来安装Tensorflow,我的环境是Ubuntu16.04. 安装Docker Docker分为CE和EE,这里我们选择CE,也就是常规的社区版,首先移除本机上可能存在的旧版本. 移除旧版本 $

Spring Cloud中使用jib进行docker部署的步骤详解

Jib介绍 Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供. 通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器.Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤.它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成到 Maven 和 Gradle中 -- 只需要将插件添加到构建中,就可以立即将 Jav

使用docker部署django技术栈项目的方法步骤

随着Docker的普及成熟,已经逐渐成为部署项目的首选,今天来和大家分享下如何使用docker部署django技术栈项目. 我们这里说的Django技术栈为:python3.6.Django2.2.redis.mysql.celery.gunicorn和nginx.在实际的生产项目中,这些组件分布在集群的不同机器,如Nginx.redis和Mysql可能会有单独的团队或部门负责.涉及的部署架构和容器的编排会更为复杂,本文暂不去深究.本文主要介绍,如何使用 docker-compose 来编排这些

Docker部署Flask应用的实现步骤

一.目的 本地写好一个Flask应用,用Docker封装,上传至自己的服务器,完成部署. 流程图: 二.实验环境 本地:Windows10 1909 服务器:阿里云Centos系统 三.所需软件 1.DockerDesktop 2.Pycharm 2020.3.3 四.步骤 1.本地完成Flask应用的编写 (1)在PyCharm里新建一个Flask应用docker_flask (2)安装gunicorn,gevent包 (3)新建gunicorn.config.py文件,并填入以下内容 wor

利用Spring Boot创建docker image的完整步骤

前言 在很久很久以前,我们是怎么创建Spring Boot的docker image呢?最最通用的办法就是将Spring boot的应用程序打包成一个fat jar,然后写一个docker file,将这个fat jar制作成为一个docker image然后运行. 今天我们来体验一下Spring Boot 2.3.3 带来的快速创建docker image的功能. 传统做法和它的缺点 现在我们创建一个非常简单的Spring Boot程序: @SpringBootApplication @Res

在Idea中使用Docker部署SpringBoot项目的详细步骤

前言 项目需要: 安装Dockeridea中安装docker插件,并配置docker一个SpringBoot项目创建Dockerfile 一.下载.安装.配置Docker下载Docker 下载地址:官网下载 Docker 安装 一直下一步就行 配置路径:Settings–General 勾选 Expose daemon on tcp://localhost:2375 without TLS 设置镜像,提高下载镜像的速度https://xaiqlt1z.mirror.aliyuncs.com 测试

如何使用docker部署前端应用的方法步骤

docker 变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,方便运维管理.对开发者也更方便开发,测试与部署. 最重要的是, 当你面对一个陌生的项目,你可以照着 Dockerfile,甚至不看文档(文档也不一定全,全也不一定对)就可以很快让它在本地跑起来. 现在很强调 devops 的理念,我把 devops 五个大字放在电脑桌面上,格物致知了一天.豁然开朗,devops 的意思就是写一个 Dockerfile 去跑应用(开玩笑. 这里介绍如何使用 Docker 部署前端应用.千里之行,始于

手把手教你实现Docker 部署 vue 项目

1.写在前面: Docker 作为轻量级虚拟化技术,拥有持续集成.版本控制.可移植性.隔离性和安全性等优势.本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思路和具体步骤,以方便有类似需要的同学参考. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,该容器包含了应用程序的代码.运行环境.依赖库.配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在