更新后,Docker 上的 Confluence 会在现有安装上运行设置助手



几天前,我的瞭望塔用6.15.1-alpine标签更新了Docker上的Confluence。它使用 Atlassians 官方图片托管。自这些更新以来,Confluence 会显示设置屏幕。没有任何机会进入管理面板。当向导结束输入现有安装的服务器凭据时,它会给出一个错误,指出安装已存在,如果继续,该安装将被覆盖。

这是对确切版本标签6.15.1标签的重新推送,而不是常规版本更新。因此,似乎不可能使用旧的工作映像。其他版本似乎也重新推动。尝试了一些旧的,也尝试了一个新的,但没有成功。

docker-compose.yml

version: "2"
volumes:
confluence-home:
services:
confluence:
container_name: confluence
image: atlassian/confluence-server:6.15.1-alpine
#restart: always
mem_limit: 6g
volumes:
- confluence-home:/var/atlassian/application-data/confluence
- ./confluence.cfg.xml:/var/atlassian/application-data/confluence/confluence.cfg.xml
- ./server.xml:/opt/atlassian/confluence/conf/server.xml
- ./mysql-connector-java-5.1.42-bin.jar:/opt/atlassian/confluence/lib/mysql-connector-java-5.1.42-bin.jar
networks:
- traefik
environment:
- "TZ=Europe/Berlin"
- JVM_MINIMUM_MEMORY=4096m
- JVM_MAXIMUM_MEMORY=4096m
labels:
- "traefik.port=8090"
- "traefik.backend=confluence"
- "traefik.frontend.rule=Host:confluence.my-domain.com"
networks:
traefik:
external: true

我发现图像上有以下变化:

所有权

日志抛出有关无法写入日志文件的错误,因为几乎整个主目录都由名为bin的用户拥有:

root@8ac38faa94f1:/var/atlassian/application-data/confluence# ls -l
total 108
drwx------  2 bin        bin         4096 Aug 19 00:03 analytics-logs
drwx------  3 bin        bin         4096 Jun 15  2017 attachments
drwx------  2 bin        bin        24576 Jan 12  2019 backups
[...]

这可以通过执行 chown 来修复:

docker exec -it confluence bash
chown  confluence:confluence -R /var/atlassian/application-data/confluence

支架内的刨花环

我的docker-compose.yml将一个卷挂载到/var/atlassian/application-data/confluence,在这些卷内,confluence.cfg.xml文件是从当前目录挂载的。这种方法有点旧,应该将卷中的用户数据与配置文件(如docker-compose.yml(以及应用程序本身分开,作为confluence.cfg.xml

似乎在使用 Docker 17.05 和 Docker-Compose 1.8.0(至少与 Confluence 结合使用(时无法正常工作,所以我只是删除了第二个挂载并将配置文件放在卷内。

Atlassian 现在可以动态创建配置文件

值得注意的是,我挂载的配置文件(如confluence.cfg.xmlserver.xml(被 Atlassians 容器覆盖。他们的源代码显示他们现在使用Jina2,这是一个常见的Python模板引擎,用于例如Ansible。python脚本在启动时解析这些文件并创建Confluences配置文件,而不正确检查所有这些文件(如果它们已经存在(。

将它们挂载为只读会导致应用程序崩溃,因为这也不会在他们的 Python 脚本中处理。通过分析他们的模板,我了解到他们几乎用环境变量替换了每个配置项。这不是一个糟糕的方法,所以我通过 env 变量指定了我的server.xml参数,而不是对整个文件进行移动。

就我而言,Confluence 位于 Traefik 反向代理后面,需要告诉 Confluence 它是最终用户的最终应用程序 URL:

environment:
- ATL_proxyName=confluence.my-domain.com
- ATL_proxyPort=443
- ATL_tomcat_scheme=https

最终工作docker-compose.yml

通过应用上述所有修改,使用以下docker-compose.yml文件再次访问现有安装:

version: "2"
volumes:
confluence-home:
services:
confluence:
container_name: confluence
image: atlassian/confluence-server:6.15.1
#restart: always
mem_limit: 6g
volumes:
- confluence-home:/var/atlassian/application-data/confluence
- ./mysql-connector-java-5.1.42-bin.jar:/opt/atlassian/confluence/lib/mysql-connector-java-5.1.42-bin.jar
networks:
- traefik
environment:
- "TZ=Europe/Berlin"
- JVM_MINIMUM_MEMORY=4096m
- JVM_MAXIMUM_MEMORY=4096m
- ATL_proxyName=confluence.my-domain.com
- ATL_proxyPort=443
- ATL_tomcat_scheme=https
labels:
- "traefik.port=8090"
- "traefik.backend=confluence"
- "traefik.frontend.rule=Host:confluence.my-domain.com"
networks:
traefik:
external: true

最新更新