用MySQL Docker设置Jira

393 阅读4分钟

用MySQL Docker设置Jira。

了解如何用MySQL docker设置Jira。

大家好。

隔了很久,我又来了。我有一些新的和有趣的东西。在这篇文章中,我们将在我们的主机上建立一个基于Jira DataCenter/Server的实例。

前提条件

  1. 安装最新版本的Jira。下载Jira软件服务器。在这个演示中,我使用了Jira软件9.1.0的tar.gz归档发布。你也可以下载基于zip的分发。我更喜欢这些,因为它们大多与平台无关。提取它。
  2. Docker应该被安装。

现在让我们开始演示。 我在这个演示中使用Mac。

我们将首先创建一个自定义的mysql选项文件 my-custom.conf。我以如下方式创建了该文件。

外壳

$ pwd
/Users/cpandey/Docker

$ cat mysql-conf/jiramysql/conf.d/my-custom.conf 
[mysqld]
default-storage-engine=INNODB
character_set_server=utf8mb4
innodb_default_row_format=DYNAMIC
innodb_log_file_size=2G
sql_mode=NO_AUTO_VALUE_ON_ZERO

现在我将运行以下docker命令来运行MySQL docker镜像。 这里重要的一点是,作为体积,我提供了my-custom.conf作为MySQL选项文件,也提供了mysql-data 作为我主机中的文件夹名称,这样它就可以持续保存MySQL数据。我已经将容器名称设置为jiramysql

外壳

$ docker pull mysql
$ sudo docker run --detach --name=jiramysql --env="MYSQL_ROOT_PASSWORD=password" --publish 6603:3306 --volume=/Users/cpandey/Development/Docker/mysql-data:/var/lib/mysql --volume=/Users/cpandey/Development/Docker/mysql-conf/jiramysql/conf.d:/etc/mysql/conf.d mysql
$ sudo docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS          PORTS                                                  NAMES
e16fe72d3be3   mysql             "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes    33060/tcp, 0.0.0.0:6603->3306/tcp, :::6603->3306/tcp   jiramysql
7ecf80fa4caf   postgres:latest   "docker-entrypoint.s…"   4 weeks ago     Up 27 minutes   0.0.0.0:6432->5432/tcp, :::6432->5432/tcp              postgres1

$ sudo docker exec -it jiramysql bash
bash-4.4# mysql -uroot -ppassword
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.30 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

现在我正在MySQL中为我的Jira设置创建一个用户和数据库。此外,我还提供了所有的权限。

外壳

mysql> create database jiradb character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected(0.01sec)
mysql> create user 'jiradbuser' identified by 'jiradbpassword';
Query OK, 0 rows affected (0.07 sec)

mysql> grant all privileges on jiradb.* to 'jiradbuser'@'%' with grant option;
Query OK, 0 rows affected (0.10 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.05 sec)

通过以下命令,我们可以检查MySQL docker容器的细节。

外壳

$ sudo docker ps|grep jiramysql
35c9714543f9   mysql             "docker-entrypoint.s…"   27 minutes ago   Up 27 minutes      33060/tcp, 0.0.0.0:6603->3306/tcp, :::6603->3306/tcp   jiramysql

$ sudo docker inspect jiramysql|grep -A 16 -i mounts
             "Mounts": [
            {
                "Type": "bind",
                "Source": "/Users/cpandey/Development/Docker/mysql-data",
                "Destination": "/var/lib/mysql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/Users/cpandey/Development/Docker/mysql-conf/jiramysql/conf.d",
                "Destination": "/etc/mysql/conf.d",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }

我们必须按照以下方式设置jira.home。Jira默认在这个文件夹中创建索引缓存、插件缓存和应用日志。

$ atlassian-jira-software-9.1.0-standalone$ mkdir jira-home
$ atlassian-jira-software-9.1.0-standalone$ cat atlassian-jira/WEB-INF/classes/jira-application.properties

jira.home = /Users/cpandey/Development/JIRA_SOFTWARE/9_JIRA/atlassian-jira-software-9.1.0-standalone/jira-home

这里下载MySQL驱动jar文件。我选择了独立于平台的选项进行下载。

将MySQL驱动jar文件复制到Jira安装文件夹的lib文件夹。我使用了mysql-connector-java-8.0.30.jar驱动版本。

外壳

$ atlassian-jira-software-9.1.0-standalone/lib$ ls -ltr|grep mysql
-rw-r--r-- 1 cpandey cpandey 2513563 Jul  1 03:18 mysql-connector-java-8.0.30.jar

启动Jira。

外壳

$ cd atlassian-jira-software-9.1.0-standalone/bin
$ ./start-jira.sh

使用URLhttp://localhost:8080 访问Jira如果页面加载成功,那么选择**"我自己**来设置"。点击 "下一步"按钮。

现在我们要设置一个数据库,并选择**"我自己的数据库**"。查看下面的截图,了解主机、端口、数据库类型、数据库名称、用户名和密码等细节。所有这些配置都来自我们先前的步骤,当我们作为docker容器运行MySQL时。点击测试连接,这应该是一个成功。然后点击 "下一步"按钮。

等待一段时间,现在数据库脚本被执行,以在MySQL中创建一个完整的Jira数据库。一旦完成,我们将得到这个屏幕。

在这之后,我们将被要求提供一个许可证。出于示范目的,可以使用试用许可证。此外,一旦许可证设置完毕,我们将不得不接下来创建一个管理员用户,最后,我们将被要求设置电子邮件通知 ,我们可以稍后设置。

我们可以在**[JIRA-HOME]/dbconfig.xml**文件中检查Jira的数据库客户端配置。我们可以进一步调整这个文件的数据库池配置。

外壳

$ cd atlassian-jira-software-9.1.0-standalone/jira-home
$ cat dbconfig.xml
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql8</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://address=(protocol=tcp)(host=localhost)(port=6603)/jiradb?sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
    <username>jiradbuser</username>
    <password>jiradbpassword</password>
    <pool-min-size>40</pool-min-size>
    <pool-max-size>40</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>40</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>
    <connection-properties>nullDatabaseMeansCurrent=true</connection-properties>
  </jdbc-datasource>
</jira-database-config>

就这样了。设置已经完成。我希望你觉得这篇文章对你有帮助。