docker_redmine搭建

官方镜像:https://hub.docker.com/_/redmine/


部署

  1. 先找官方的,在拉下来
1
2
3
4
5
6
root@ubuntu:~# docker search redmine
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redmine Redmine is a flexible project management w... 436 [OK]
sameersbn/redmine 243 [OK]

root@ubuntu:~# docker pull redmine # 基本上pull第一个就是官方的镜像
  1. run启动,也可以使用 [docker-compose 方式](#docker-compose 方式) 启动

    1. 先新建几个文件夹,用来挂载容器的数据
    1
    2
    $ mkdir -p /opt/redmine/mysql_data
    $ mkdir -p /opt/redmine/data
    1. 先启动 mysql
    1
    2
    3
    4
    5
    6
    7
    8
    $ docker run -d \
    --restart=always \
    --name mysql_redmine \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -e MYSQL_DATABASE=redmine \
    -p 3307:3306 \
    -v /opt/redmine/mysql_data:/var/lib/mysql \
    mysql
    1. 再启动 redmine

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      $ docker run -d \
      -p 8090:3000 \
      --restart=always \
      --name my_redmine \
      -v /opt/redmine/data:/usr/src/redmine/files \
      -e "LANG=en_US.UTF-8" \
      -e REDMINE_DB_DATABASE=redmine \
      -e REDMINE_DB_USERNAME=root \
      -e REDMINE_DB_PASSWORD=123456 \
      --link mysql_redmine:mysql \
      redmine
  3. 默认用户名和密码都是:admin

docker-compose 方式

  • docker-compose.yml 文件内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    version: '2'
    services:
    redmine:
    image: redmine:latest
    container_name: my_redmine22
    restart: always
    ports:
    - 8092:3000
    environment:
    - "LANG=en_US.UTF-8"
    - "REDMINE_DB_DATABASE=redmine"
    - "REDMINE_DB_USERNAME=root"
    - "REDMINE_DB_PASSWORD=123456"
    volumes:
    - /opt/redmine/data:/usr/src/redmine/files
    depends_on:
    - mysql_db
    links:
    - mysql_db

    mysql_db:
    image: mysql:latest
    container_name: mysql_redmine22
    restart: always
    ports:
    - 3308:3306
    environment:
    - "MYSQL_ROOT_PASSWORD=123456"
    - "MYSQL_DATABASE=redmine"
    volumes:
    - /opt/redmine/mysql_data:/var/lib/mysql
  • 启动、查看、停止、移除

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    wilker@ubuntu:~/Desktop/a_redmine$ docker-compose up -d # 启动
    Creating mysql_redmine22
    Creating my_redmine22

    wilker@ubuntu:~/Desktop/a_redmine$ docker-compose ps # 查看
    Name Command State Ports
    ---------------------------------------------------------------------------------
    my_redmine22 /docker-entrypoint.sh rail ... Up 0.0.0.0:8092->3000/tcp
    mysql_redmine22 docker-entrypoint.sh mysqld Up 0.0.0.0:3308->3306/tcp

    wilker@ubuntu:~/Desktop/a_redmine$ docker-compose stop # 停止
    Stopping my_redmine22 ... done
    Stopping mysql_redmine22 ... done

    wilker@ubuntu:~/Desktop/a_redmine$ docker-compose rm # 移除
    Going to remove my_redmine22, mysql_redmine22
    Are you sure? [yN] y
    Removing my_redmine22 ... done
    Removing mysql_redmine22 ... done

邮件通知

这里以配置 qq 邮箱为例,先要在 qq 邮箱开启 smtp 服务,并生产授权码(这里称 auth_code),其实配置差不多和 gitlab 中的 邮件通知配置 差不多,参照 docker_gitlab搭建.md

  • 启动容器后默认是没有开启邮件通知, 管理 -> 配置 -> 邮件通知

  1. 进入 qq 邮箱, 设置 -> 账号 ,生产授权码 auth_code

  2. 先配置域名,邮件通知内容里的连接调转,管理 -> 配置 -> 一般主机名称 修改为 www.xxx.com:8080

  3. 进入容器内,修改配置文件 /usr/src/redmine/config/configuration.yml ,这个文件并不存在,不过有个样本 /usr/src/redmine/config/configuration.yml.example 可以直接复制修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    $ docker exec -it some-redmine bash
    root@471dce18ac7a:/usr/src/redmine# cd config
    root@471dce18ac7a:/usr/src/redmine/config# cp configuration.yml.example configuration.yml # 复制出一份 configuration.yml
    root@471dce18ac7a:/usr/src/redmine/config# vi configuration.yml # 这个容器里是没有vi命令的,我是利用启动时挂载了目录到宿主机子中(-v /root/a_redmine/datadir:/usr/src/redmine/files),是移到宿主机子中 vi 修改

    # 注释掉这两行
    # production:
    # development:

    # 加入以下内容
    production:
    email_delivery:
    delivery_method: :async_smtp
    async_smtp_settings:
    address: "smtp.qq.com"
    port: 465
    ssl: true
    authentication: :login
    domain: 'qq.com'
    user_name: '364105996@qq.com'
    password: 'auth_code' # 这里填入的不是 qq 密码,而是刚才生成的 授权码,下同
    enable_starttls_auto: true
    openssl_verify_mode: 'none'

    development:
    email_delivery:
    delivery_method: :async_smtp
    async_smtp_settings:
    address: "qq.com"
    port: 465
    ssl: true
    authentication: :login
    domain: 'smtp.qq.com'
    user_name: '364105996@qq.com'
    password: 'auth_code'
    enable_starttls_auto: true
    openssl_verify_mode: 'none'
    • async_smtp:是异步通知邮件
  4. 退出容器并重启

    1
    2
    3
    4
    root@471dce18ac7a:/usr/src/redmine/config# exit
    exit
    root@ubuntu:~/a_redmine/datadir# docker restart some-redmine
    some-redmine
  5. 然后再配置 邮件通知 ,此时就可以显示出来了, 邮件发件人地址 一定要和 configuration.yml 配置文件 中的 user_name 一致,然后根据需求勾选需要通知的内容

    在右下角有个 发送测试邮件 ,点击测试,配置成功就能收到邮件了


踩坑记录

  • 发送邮件时发生错误 535

    configuration.yml 配置中的 password 填成了qq密码,正确的应该是生成的授权码 auth_code

  • 找不到 新建问题

  • redmine docker 容器 一部署就立马 Exit 或者 无限 Restart

    • 可能是没有清楚之前部署后在挂载的两个目录中由残留垃圾,需要清赶紧在重新部署 mysql 和 redmine。(如无需备份,直接 rm -fr)

      1
      2
      $ sudo rm -fr /opt/redmine/mysql_data/*
      $ sudo rm -fr /opt/redmine/data/*

清除指令

  • 懒癌发作就这样记录下 清空 容器 及 数据 的指令

    1
    2
    3
    4
    $ docker stop my_redmine && docker rm my_redmine
    $ docker stop mysql_redmine && docker rm mysql_redmine
    $ sudo rm -fr /opt/redmine/mysql_data/*
    $ sudo rm -fr /opt/redmine/data/*

参考资料