別被人的否定,而不去肯定自我

0%

學習筆記-如何使用docker-compose快速建置redmine

開始之前

  1. 可先去docker hub下載redmine、postgres兩個image
  2. 準備一台可以運行docker的機器,這邊選擇使用AWS的EC2作為主機

撰寫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
32
33
34
35
36
37
version: "3.8"
services:
postgres:
image: postgres:latest
container_name: postgres
restart: always
environment:
- POSTGRES_NAME= # 你資料庫的名稱
- POSTGRES_USER= # 資料庫使用者或帳號
- POSTGRES_PASSWORD= # 資料庫密碼
volumes:
- ~/redmine/postgres:/var/lib/postgresql/data
- ~/redmine/sql:/var/lib/postgresql
ports:
- "5432:5432"

redmine:
image: redmine:latest
container_name: redmine
restart: always
links:
- postgres
environment:
- POSTGRES_PORT=5432
- POSTGRES_NAME= # 你資料庫的名稱
- POSTGRES_USER= # 資料庫使用者或帳號
- POSTGRES_PASSWORD= # 資料庫密碼
- REDMINE_PORT=80
volumes:
- ~/redmine/redmine/files:/usr/src/redmine/files
- ~/redmine/redmine/log:/usr/src/redmine/log
- ~/redmine/redmine/plugins:/usr/src/redmine/plugins
- ~/redmine/redmine/themes:/usr/src/redmine/public/themes
depends_on:
- postgres
ports:
- "80:3000"

開始建置

  1. 首先請先ssh到你的EC2主機上,並確保docker以及docker-compose已被安裝。
  2. 接著將yml檔命名成docker-compose.yml並移至你想要的資料夾內
    1
    2
    # 這邊提供如何將本機資料上傳至EC2
    scp 要上傳的本機檔案位置 EC2主機IP:要移至EC2的哪個位置
  3. 搬移檔案完成後
    1
    2
    docker-compose up -d # 啟動所有服務並在背景運行
    docker-compose ps # 查看服務是否都有被成功運行
  4. 基本上到了這步就可以開啟瀏覽器看到redmine已經成功被建置成功了,但是redmine預設database是內建的sqlite,所以我們要來改變一下資料庫
  5. 先創建或者進去docker裡面拉出database.yml,這邊介紹如何進去docker裡面拉出database.yml,因為創建好像不太需要說明?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 沒關係怕有些讀者可能不太清楚linux上如何透過指令新增檔案
    # 這邊稍微介紹幾個可以做到新增檔案的方法
    1. vim database.yml # 進入vim後:wq指令退出即會得到一個database.yml
    2. touch database.yml # 這個步驟比較簡單只要下這行指令就會得到一個database.yml

    # 接著我要來介紹如何進入docker拿取database.yml
    1. docker exec -it rdmine bash # 進入我們剛創建好的redmine的container裡面
    2. cp /usr/src/redmine/config # 進入config資料夾內
    3. ls -al # 你會發現到一個database.yml
    4. docker cp database.yml 你要在實體機器上存放的位置
    5. exit # 退出container
  6. 回到實體機器(EC2)上你就會發現你已經把database.yml存取出來了
  7. 接著我們來編輯database.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1. vim database.yml # 可以看到database預設是使用sqlite,這時候我們需要修改成剛我們創建好的postgres

    production:
    adapter: postgresql
    encoding: utf8
    database: redmine
    host: postgres的ip位置
    username: 資料庫使用者或帳號
    password: 資料庫密碼
    pool: 25
  8. 看到這邊你可能會說啊postgres的IP位置我要怎麼得知,別急我接著來告訴你如何取得container的IP位置
    1
    2
    3
    docker network ls # 列出網路資訊找到剛剛創建的network
    docker network inspect networkname # 查詢剛看到的nwtworkname詳細資訊
    # 找到container是postgres的IP將他複製就可以了
  9. 修改完database.yml後,最重要的一步就是將database.yml放回去container裡面拉
    1
    2
    docker cp database.yml 要放到container的哪個位置
    docker-compose restart redmine # 重啟redmine
  10. 走到這步,我們終於完成了redmine串接資料庫了,替自己拍拍手吧

以下步驟看個人喜好繼續學習
11. 但是呢redmine怎能少email這個服務呢,接著再來介紹一下redmine如何串連SMTP
12. 這邊我使用gmail的SMTP,但要進行這個步驟必須要先有自己的email domain,如果沒有的話應該是能用gmail的,但這部分我沒試過所以我也不太清楚
13. 一樣我這邊直接進入container拉出configuration.yml,詳細教學上面有講了我這邊就不多打了
14. 拉出後修改configuration.yml

1
2
3
4
5
6
7
8
9
10
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: # 'your.domain.com' for GoogleApps
authentication: :plain
user_name: # 帳號
password: # 密碼
  1. 修改完後將configuration.yml丟進去container接著重啟redmine服務
  2. 接著就大功告成拉可以開始使用redmine
  3. 其他的修改redmine和加入套件會再額外撰寫一篇文章,這邊就先不做敘述了