几天前,我的监视塔用6.15.1-alpine标签更新了Docker上的Confluence。它是使用Atlassians official image托管的。由于这些更新,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发布于 2019-09-01 01:54:14
我发现图像上有以下变化:
所有权
日志抛出有关无法写入日志文件的错误,因为几乎整个主目录都归一个名为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/confluenceMoutings内侧安装
我的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.xml和server.xml,被Atlassians容器覆盖了。他们现在使用Jina2,这是一个常用的Their source code shows模板引擎,例如Ansible。A python script在启动时解析这些文件并创建Confluence配置文件,而不正确检查所有这些文件是否已经存在。
将它们挂载为只读会导致应用程序崩溃,因为这也不会在他们的Python脚本中处理。通过分析他们的模板,我了解到他们用环境变量替换了几乎所有的配置项。这是一种不错的方法,因此我通过环境变量指定了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: truehttps://stackoverflow.com/questions/57740411
复制相似问题