Dockerrize an existing confuluence server

前言

一些服务器中跑的服务在做docker化,confluence server是我要做的第一个docker化程序,因着需要带数据迁移,尽量避免自己打镜像,倒数据库或者从备份数据恢复的步骤,既然用docker就要用好docker的可便携性和可升级性的特点。

准备

镜像选用的官方镜像,按着官方的说法他们的docker镜像主要用于评估,也不带oracle-jdk,我个人感觉和我平时安装用的官方二进制的confluence server安装包差不多,版本升级几乎还没有遇到问题过。

docker镜像

  docker.io/atlassian/confluence-server:latest
  docker.io/mysql:5.6

容器目录

其中confluence-home和mysql-data目录都是直接从原来的服务器上复制过来的

  .
  |-- confluence-home                            #confluence数据目录
  |   `-- confluence
  |-- docker-compose.yml
  |-- fonts                                      #中文字体
  |   |-- microsoft
  |   `-- wqy-zenhei
  |-- libs                                       #mysql驱动
  |   |-- mysql-connector-java-5.1.46-bin.jar
  |   |-- mysql-connector-java-5.1.46.jar
  |   `-- mysql-connector-java-5.1.46.tar.gz
  |-- mysql-conf                                 #mysql配置文件
  |   `-- my.cnf
  `-- mysql-data                                 #mysql数据目录
      |-- auto.cnf
      |-- confluence
      |-- ibdata1
      |-- ib_logfile0
      |-- ib_logfile1
      |-- mysql
      `-- performance_schema

docker compose file

docker-compose.yml做了这几个事情

  • mapping mysql-config目录

  • mapping

mysql-data目录

  • mysql环境配置

  • mapping confluence-home

  • mapping mysql-connector-java driver

  • mapping 中文字体

  version: '2'
  services:
    confluence-mysql:
      container_name: confluence-mysql
      image: mysql:5.6
      volumes:
        - ./mysql-conf:/etc/mysql/conf.d/
        - ./mysql-data:/var/lib/mysql
      restart: always
      ports:
        - "3306:3306"
      environment:
        MYSQL_ROOT_PASSWORD: '${ROOT_PASSWORD}'
        MYSQL_DATABASE: confluence
        MYSQL_USER: confluenceuser
        MYSQL_PASSWORD: ${PASSWORD}
    confluence:
      container_name: confluence
      depends_on:
        - confluence-mysql
      image: atlassian/confluence-server
      volumes:
        - ./confluence-home/confluence:/var/atlassian/application-data/confluence
        - ./libs/mysql-connector-java-5.1.46-bin.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.46-bin.jar
        - ./libs/mysql-connector-java-5.1.46.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.46.jar
        - ./fonts/microsoft:/usr/share/fonts/microsoft
        - ./fonts/wqy-zenhei:/usr/share/fonts/wqy-zenhei
      links:
        - confluence-mysql
      ports:
        - "8090:8090"
        - "8091:8091"
      restart: always
      environment:
        - 'CONFLUENCE_DB_HOST= confluence-mysql:3306'
        - 'CONFLUENCE_DB_USER= confluenceuser'
        - 'CONFLUENCE_DB_PASSWORD= ${PASSWORD}'
        - 'CONFLUENCE_DB_NAME= confluence'
        - 'CATALINA_OPTS= -Xms1g -Xmx2g'
        - 'CONFLUENCE_PROXY_NAME='
        - 'CONFLUENCE_PROXY_PORT='
        - 'CONFLUENCE_PROXY_SCHEME='
        - 'CONFLUENCE_DELAYED_START='
  • 执行命令

  docker-compose up       #调试使用,方便看日志
  docker-compose up -d    #daemon 中运行
  docker-compose ps       #列出容器
  docker-compose logs -f  #查看日志
  docker-compose stop     #停止容器
  docker-compose rm       #删除容器

注意

运行容器前修改配置文件=confluence_home/confluence/confluence.cfg.xml= 将mysql服务器地址替换为mysql容器的=container_name=;

      <property name="hibernate.connection.url">jdbc:mysql://confluence-mysql/confluence</property>

之前尝试过将=confluence_install_dir= mapping到容器会报启动用户的错误

后面需要将backups目录mapping到host的目录 /var/atlassian/application-data/confluence

总结

官方没有对docker的环境做出的support,因着版权的原因docker镜像中集成了openjdk而不是oracle-jdk;按着官方的说法生产环境中时要用oracle-jdk,同时不建议跑docker化的confluence server。我的使用场景是是内部团队使用,好在team人数不多,对环境要求也不高够用即可;相比较来说,易于维护是我更看重的。


Tao

Docker

195 Words

2018-05-23 20:00 -0400