安装docker版jira8.0.2

docker镜像使用官方的atlassian/jira-software:8.0.2-jdk8

docker版本需要 >= 20.10.10

数据库不要用默认字符集初始化(默认为Latin1),否则创建项目不正常,建议utf8 & utf8_bin

utf8mb4排序规则不对也在低版本上会报错Caused by: org.ofbiz.core.entity.GenericDataSourceException: SQL Exception while executing the following:SELECT pluginkey, pluginenabled FROM pluginstate (Table 'jira.pluginstate' doesn't exist)

目前字符级建议 mysql5.6 版utf8 & utf8_bin ,mysql5.7版utf8mb4 & utf8mb4_bin ,mysql8 版utf8mb4 & utf8mb4_bin/utf8mb4_0900_ai_ci

详见:MySQL Database Collation health check fails in Jira server | Jira | Atlassian Documentation

初始化安装

docker-compose.yaml

复制代码
version: '3'
services:
  jira:
    container_name: jira    
    image: atlassian/jira-software:8.0.2-jdk8
    ports:
      - "8080:8080"
    volumes:
      #- '${PWD}/jira/dbconfig/dbconfig.xml:/var/atlassian/application-data/jira/dbconfig.xml'
      #- '${PWD}/jira/jira-home-data:/var/atlassian/application-data/jira/data'
      - '${PWD}/jira/jira-home:/var/atlassian/application-data/jira'
    environment:
      - DB_TYPE=mysql
      - DB_HOST=jira_db
      - DB_NAME=jira
      - DB_USER=jira_user
      - DB_PASSWORD=jira_password
    depends_on:
      - jira_db
    restart: always
  jira_db:
    container_name: jira_db
    image: mysql:5.6
    ports:
      - "3306:3306"
    volumes:
      - '${PWD}/mysql/db:/var/lib/mysql'
      #- '${PWD}/mysql/conf/my.cnf:/etc/mysql/my.cnf'
      - '${PWD}/mysql/init:/docker-entrypoint-initdb.d'
    environment:
      - MYSQL_ROOT_PASSWORD=root_password
      - MYSQL_DATABASE=jira
      - MYSQL_USER=jira_user
      - MYSQL_PASSWORD=jira_password
    command:
      - '--character-set-server=utf8'
      - '--collation-server=utf8_bin'
    restart: always

使用docker-compose命令启动

复制代码
docker-compose up -d

启动后访问

http://ip:8080

进行配置

配置中若报驱动不存在,执行如下命令

复制代码
#容器外下载后复制到容器内,然后重启容器
curl -0 https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar --output mysql-connector-java-5.1.49.jar
docker cp mysql-connector-java-5.1.49.jar jira:/opt/atlassian/jira/lib
docker restart jira

授权

可以申请30天的试用授权

登录:Atlassian Store | 报价与订购表单 | 购买 Atlassian 产品

产品:Jira

许可证类型:Jira Software (Data Center)

服务器ID:输入jira系统配置页面的server id

授权申请后填入jira系统可试用30天。

初始化完成后的配置

上面的jdbc驱动需要做映射,防止容器删除后丢失

执行命令复制

复制代码
cd jira
mkdir lib
docker cp jira:/opt/atlassian/jira/lib/mysql-connector-java-5.1.49.jar ./lib/mysql-connector-java-5.1.49.jar 

修改docker-compose文件 jira增加路径映射

复制代码
    volumes:
      - '${PWD}/jira/lib/mysql-connector-java-5.1.49.jar:/opt/atlassian/jira/lib/mysql-connector-java-5.1.49.jar'

误删容器找回

如果误删jira容器,但数据库还在可以通过配置数据库找回,但是附件信息就没有了

在jira的home目录编辑dbconfig.xml 配置成你自己的连接信息

复制代码
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://address=(protocol=tcp)(host=jira_db)(port=3306)/jira?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <username>jira_user</username>
    <password>jira_password</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <validation-query>select 1</validation-query>
    <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
    <pool-test-on-borrow>false</pool-test-on-borrow>
    <pool-test-while-idle>true</pool-test-while-idle>
    <validation-query-timeout>3</validation-query-timeout>
  </jdbc-datasource>
</jira-database-config>

然后重新启动jira容器即可。

初始数据库字符集设置错了修改

假设数据库名为jiradb,统一修改为 utf8 utf8_bin 执行如下语句

修改数据字符集

复制代码
ALTER DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;

修改表级别字符集

复制代码
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;') 
FROM information_schema.tables 
WHERE table_schema = 'jiradb';

生成的结果作为SQL执行

修改字段级别字符集

复制代码
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8 COLLATE utf8_bin;') 
FROM information_schema.columns 
WHERE table_schema = 'jiradb' 
AND data_type IN ('varchar', 'char', 'text', 'tinytext', 'mediumtext', 'longtext');

生成的结果作为SQL执行

相关推荐
Trouvaille ~7 小时前
【Linux】库制作与原理(二):ELF格式与静态链接原理
linux·运维·c语言·操作系统·动静态库·静态链接·elf文件
一点晖光8 小时前
docker配置npm环境变量出现问题
docker·容器·npm
写代码的橘子n8 小时前
IPV6复习(基础入手版)
运维·服务器·网络
ICT技术最前线8 小时前
H3C双WAN口策略路由配置技术教程
运维·网络·h3c·策略路由
一分半心动8 小时前
windows docker desktop 安装VibeVoice
运维·docker·容器
向日葵.8 小时前
中间件交接文档
linux·运维·服务器
LucidX8 小时前
Docker核心操作实战
运维·docker·容器
隔壁阿布都8 小时前
Docker Compose中的网络管理
运维·docker·容器
_oP_i9 小时前
开源项目 SQLBot Dockerfile、docker-compose.yaml、Dockerfile-base 三个文件直接的关系
docker
云和数据.ChenGuang9 小时前
运维工程师技术教程之Pull Requests(PR)
运维·分布式·git·数据库运维工程师·运维教程