docker - 更新后,Confluence on Docker在现有安装上运行安装助手

标签 docker docker-compose traefik confluence

几天前,我的watch望塔用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

最佳答案

我发现图像上有以下更改:

所有权

由于几乎整个主目录均由一个名为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容器覆盖。 Their source code shows,他们现在使用的是Jina2,这是一种常见的Python模板引擎,例如太好了A python script在启动时解析这些文件并创建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

关于docker - 更新后,Confluence on Docker在现有安装上运行安装助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740411/

相关文章:

docker - 如何在 Docker 之外将 NGINX 反向代理到 proxy_pass 到 docker 容器

node.js - 错过客户端的心跳,超时 : 30s - RabbitMQ

docker - 将 Vault 与 docker-compose 文件一起使用

docker - 如何创建准备使用 docker-compose 进行部署的镜像

docker - Docker 上的 Redis Sentinel 提供 Docker 网络 IP 地址

tesseract 4.0 的 Dockerfile

.net - 构建 .net 核心 docker 镜像失败

docker - Traefik 忽略带有 traefik.enable=true 设置的 docker

docker - traefik+docker-compose获取let's encrypt子域证书失败

traefik - 如何在注释中使用多个 ReplacePathRegex 规则