在 Ubuntu 上使用 Docker 架設 Redmine Server

什麼是 Redmine

Redmine 是一個火紅的網頁介面的專案管理與缺陷跟蹤管理系統的自由及開放原始碼軟體工具。它整合了專案管理所需的各項功能:日曆、燃盡圖和甘特圖 以協助視覺化表現專案與時間限制,問題跟蹤和版本控制。此外,Redmine也可以同時處理多個專案。 (摘錄自維基百科)

為什麼要使用 Docker 架設 Redmine Server

Redmine 官方已經釋出 Redmine Docker Image,利用 Docker 可以節省許多安裝設定環境的繁瑣步驟,也方便未來管理與維護。有關 Docker 的介紹與安裝步驟,請參考另一篇文章「在 Ubuntu 18.04 上安裝 Docker 與 Docker Compose」。

安裝 Redmine Docker

網路上已經有 Redmine 釋出的官方 Docker Image 安裝文件,也可以找到很多相關的文章,為什麼還要這麼雞婆寫這一篇文章呢?如果按照官方版的安裝步驟,或者是網路上的一些文章,其實多多少少都會遇到一些問題要解決。以下的安裝設定步驟是在 Ubuntu 18.04.1 Server 下測試成功。

1. 建立 docker-compose.yml 文件
在官網或是網路上很多的教學文章,在 environment 部分都沒有設定完整,造成 Redmine 啟動無法正確讀取資料庫,如果按照我的範例來設定的話就不會有問題:

vi docker-compose.yml
(底下為檔案內容)
version: '3'
services:
  postgres:
    hostname: PostgreSQL
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - redmine_postgresql:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=redmine
      - POSTGRES_PASSWORD=xxxxxx
    image:
      postgres
  redmine:
    hostname: Redmine
    restart: always
    ports:
      - "3088:3000"
    volumes:
      - redmine_config:/usr/src/redmine/config
      - redmine_files:/usr/src/redmine/files/files
    environment:
      - REDMINE_DB_POSTGRES=postgres
      - REDMINE_DB_DATABASE=redmine
      - REDMINE_DB_USERNAME=redmine
      - REDMINE_DB_PASSWORD=xxxxxx
    links:
      - postgres:postgres
    image:
      redmine
volumes:
  redmine_postgresql:
  redmine_config:
  redmine_files:


2. 啟動 Redmine Server Docker

請在 docker-compose.yml 目錄下執行 up 指令,若是第一次啟動,系統會自動搜尋 Docker Hub 的 postgresredmine Images,並從網路上下載至您的主機:

docker-compose up -d


Docker Image 下載完成後會自動啟動,您可以用 images 指令確認 Image 已經下載至您的主機,儲存庫(Repository) 會顯示 Redmine 的 Image 名稱,Postgres 是 Redmine 使用的資料庫:

docker-compose images
docker-compose images


再用 ps 指令確認 Redmine Docker 已經啟動,Name 就是指容器 (Container)的名稱:wizigo_postgres_x_xxxxxxxxxxxx  wizigo_redmine_x_xxxxxxxxxxxx。其中 wizigo 是我登入的使用者名稱。

docker-compose ps

建立電子郵件 SMTP 設定檔

1. 建立 Redmine 設定檔 configuration.yml
設定 Redmine 電子郵件的 SMTP server,必須手動建立設定檔才能正常運作。建立設定檔有兩種方式,一種是進入 Redmine 容器(Container)去建立並修改 “/usr/src/redmine/config/configuration.yml”

(查看 Redmine Container ID)
docker ps
(進入 Redmine 容器)
docker exec -it <Container ID> bash
(進入容器後先安裝 vi)
apt-get update
apt-get install vim
(建立並修改 Redmine 設定檔 configuration.yml)
cd /usr/src/redmine/config
cp configuration.yml.example configuration.yml
vi configuration.yml


另一種方法是直接修改此路徑對應到主機的 volumes。volumes 會將容器裡面的目錄連結到容器外部主機的目錄,使用 docker 的 volume list 指令可以看到目前系統產生的 volumes 有哪些,以我的主機為例:

docker volume list
docker volume list


上面紅色圈選的地方就是 docker-compose.yml 裡面設定的 Redmine volumes:

  ...  
  volumes:
      - redmine_postgresql:/var/lib/postgresql/data
...
  volumes:
      - redmine_config:/usr/src/redmine/config
      - redmine_files:/usr/src/redmine/files/files
...
volumes:
  redmine_postgresql:
  redmine_config:
  redmine_files:


這裡的 volumes 目錄設定請不要設定絕對路徑,直接設定目錄名稱就好了。如果設定絕對路徑的話,就會出現  volumes 目錄裡面沒有檔案,或是沒有權限讀寫目錄等奇奇怪怪的問題,一勞永逸的方法就是只設定目錄名稱,由系統自行建立 volumes 目錄。docker compose 會將這些設定的 volumes 前面加上登入的使用者名稱,例如我登入的名稱是 wizigo,所以實際產生的 volumes 目錄會是這個樣子:wizigo_<您設定的目錄名稱>,目錄是位在 Ubuntu 路徑 :/var/lib/docker/volumes/,我們可以使用管理者權限去編輯設定檔 configuration.yml。要特別注意的是,volumes 目錄後面會自動產生 “_data” 目錄,裡面才是放置檔案的真正位置。:

cd /var/lib/docker
sudo cp volumes/wizigo_redmine_config/_data/configuration.yml.example volumes/wizigo_redmine_config/_data/configuration.yml
sudo vi volumes/wizigo_redmine_config/_data/configuration.yml


接著設定 configuration.yml 裡面有關 Redmine Server 送信時使用的 SMTP 等資訊。如果您的郵件是使用 G Suite 套件的話,不需要多花一筆錢申請一個帳號給 Redmine 使用,只需要在使用的 G Suite 帳號中設定一個電子郵件別名即可,另外也需要將登入的電子郵件帳號設定成「允許使用低安全性的應用程式存取」才不會有問題。設定方法請參考之前的文章「G Suite 安全性與別名設定」。下面的 SMTP 的設定我是以 GMail 為範例,這裡的 user_name 要設定真正登入的帳號,不能使用別名,別名之後會在網頁裡面設定

...
default:
...
  delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
authentication: :plain
user_name: "wizigo@wizigo.tw"
password: "xxxxxx"
...


使用 docker compose 的 stop & up 指令重新啟動 Docker 後,設定即可生效:

docker-compose stop
docker-compose up -d

這時候使用瀏覽器連線到 Redmine Server (例如:http://192.168.0.100:3088)即可成功連線,預設使用者帳號和密碼都是 “admin“。

電子郵件、主機名稱及繁體中文相關設定

登入 Redmine 後請按右上角的「我的帳戶」,在左邊的「資訊」部分,設定管理者的「電子郵件」(這裡可以使用別名,例如: redmine@wizigo.tw)、「語言」: Traditional Chinese (繁體中文)。「偏好選項」部分,可以設定「時區」: (GMT+08:00) Taipei ,然後按「儲存」:


接著按左上教的「網站管理」,接著按左邊的「設定」進入「一般」 的設定頁面,修改「主機名稱」為你主機的網域IP 位置 + Port Number:例如 192.168.0.100:3088,然後按「儲存」。主機名稱若沒有設定好的話,Remine 寄出的相關電子郵件內連結就會有問題,請務必設定正確

一般設定


再來按「顯示」頁面,選擇「預設語言」: Traditional Chinese (繁體中文) ,然後按「儲存」。這個設定會將介面顯示繁體中文:

顯示設定


最後按「電子郵件提醒選項」頁面, 設定「寄件者電子郵件」,這個設定是系統要送出電子郵件使用的帳號,可以使用別名:例如 redmine@wizigo.tw,然後按「儲存」:

電子郵件提醒選項

大功告成!睡覺去!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *