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人数不多,对环境要求也不高够用即可;相比较来说,易于维护是我更看重的。