如何30分鐘內使用docker架設redmine(DB using postgresql)


本篇說明如何快速建置redmine於decker環境中,使用docker的環境架設系統的目的是在於不影響其主系統,也利於後續維護和系統轉移(當然也是因為要系統轉移所以遇到了不少docker的坑)
本篇大多使用工具和UI取代docker的command,以減少進入的門檻。但是還是先說一下,系統架設很簡單,後續的維護和備份還原又是另外一門學問,所以要真正營運的系統還是要交給專業的人員來做系統管理。
那就直接開始吧~~~

環境:
Win10 pro

事前準備:
Docker環境架設:
VS code(編輯yml檔及docker操作)
Vs code套件 Docker(官方網址,非安裝方式)
資料庫管理DBerver(本篇不會介紹)

Docker環境安裝 pass,請自行google。注意事項,在Windows使用Docker時是使用微軟Hyper-v的虛擬機器的技術必須要Win10專業版以上才有支援此功能。另外因為是虛擬機器的功能,所以BISO的虛擬服務需要啟用,還有其他的VM不可同時使用。(可以用cmd去啟停Hyper-v的服務,執行完命令後必須要重開機)

啟用
bcdedit /set hypervisorlaunchtype auto
停用
bcdedit /set hypervisorlaunchtype off
<<啟用Hyper-V .bat>><<停用Hyper-V.bat>>

再來是使用VS code來操作docker,替代docker command。(雖然狂敲command很帥,但是本篇強調快速簡單)
Vs code安裝請自行google
主要介紹Docker for vs code套件
開啟vs code,到市集查詢docker,找一個微軟開發的

安裝完成後會看到左方工具列會出現小鯨魚(Docker符號)


簡易說明一下使用方式
點選Docker icon
1.系統中所存在的containers(如果container為none則不會顯示)
2.系統中所存在的image(如果image為none則不會顯示)
為何上面會額外說明none不會顯示呢,因為有些服務會因為none的container或image占用住,所以不要以為這個介面沒看到就代表不存在,要下指令才可以看的到,當然也可以直接用指令刪除(https://segmentfault.com/a/1190000004491286)
3.網路配置
4.volume也就是與container內部系統相通的一個類似共用資料夾概念的服務,這個服務有分為host volume和container volume,host是container和實體電腦共用資料夾,container volume是不同容器間的共用資料夾。(本篇都會用到,但看過就好,備份還原時才會用到)
5.可以登入docker hub去抓取別人的或管理自己的image



在container操作介面上的說明,於任一container上點選右鍵可看到功能選單
先說明基本功能Start/Stop(啟動和停止container)、Restart(重啟container)、Remove(移除container)就像字面上說明
view Log:可以查看container內部系統的運作情形

Attach shell:登入container系統中,可以登入後執行程式或看log

Inspect:Container的一些資訊,使用json呈現

image、Network、volume的操作方式大同小異,略

另外再UI介面上會顯示服務所建立的時間

最後一項docker for vs code功能說明
在使用或編輯yml檔(docker-compose)時可以直接在yml檔上面按右鍵執行功能

compose Up:建立container
compose Restart:重建container
compose Down:刪除container
這裡要注意一個觀念,compose up是建立一個container,所以如果每次啟動都執行up會造成....資料不見,因為他就重建啦~~~所以up只要一次,其它的自己去container上面點start。

======================================================================
接下來說明快速建置redmine,目前使用的image來源是星星數最多的sameersbn/redmine,為了避免太多的設定和指令,所以直接過yml檔來做建置,yml的參數會再說明。

首先要建立一個資料夾,並在資料夾中建立一個檔名為docker-compose.yml的檔案,然後就可以開啟vs code來編輯

docker-compose.yml內容如下(要注意每個階層的對齊):

version: '3.2'

services:
  postgresql:
    image: sameersbn/postgresql 
    container_name: postgresql-redmine
    restart: always
    environment:
      - DB_USER=redmine
      - DB_PASS=password
      - DB_NAME=redmine_production
    ports:
      - "5432:5432"
    volumes:
      - pgsql:/var/lib/postgresql
      # - /home/docker/redmine/postgresql:/var/lib/postgresql
   
  redmine:
    image: sameersbn/redmine
    container_name: redmine
    restart: always
    links:
      - postgresql
    environment:
      - DB_ADAPTER=postgresql
      - DB_HOST=postgresql
      - DB_PORT=5432
      - DB_USER=redmine
      - DB_PASS=password
      - DB_NAME=redmine_production
      - REDMINE_PORT=80
    ports:
      - "80:80"
    volumes:
      - ./redmine/redmine:/home/redmine/data

volumes:
  pgsql:
    external: false



在來使用文章前面說明的方式進行docker-compose up
(在同一個資料夾中下指令:docker-compose up)

等待指令跑完後,在瀏覽器中輸入127.0.0.1後即可顯示redmine的系統登入畫面,登入帳號密碼皆為admin,架設完畢....夠無惱了吧!

接下來說明一下yml檔,也說一下踩到的坑
目前是使用sameersbn的redmine當image的來源,所以資料庫postgresql也是選sameersbn的(原本使用mysql但是在備份還原時沒有很順所以就先改用postgresql)

  • yml是使用第3.2版的規格
  • 4,18,37行分別區非postgresql,redmine和container volume
  • 第23行link對應的是第4行的名稱
  • 資料庫參數要設置一致,所以9,10,11和28,29,30要對應
  • postgresql的port直接用預設,redmine內部port為80,在此因為需求關系,所以外部port也是80。
  • 第31行的Redmine_Port為80要與第33行外部port對應(冒號左邊的80)
  • [若33行為10083:80,則31行要改為REDMINE_PORT=10083]
  • 第25,26,27行要設定資料庫的屬性

以上為基本設定說明,下面說一下坑

  • 就是還沒有說的volume,可以在yml檔中看到postgresql和redmine兩個的volume設置方式不同,因為postgresql無法設置host volume(因為會出錯,文末會提供一些參考連結佐證)
  • 第37,38,39行為container volume的建置指令,第39行設定為false才會自動建立,要不然要下指令建立volume。
  • 第35行是使用host volume,冒號左方是設定本機端資料夾(在此使用相對資料夾,也就是在cmd的資料夾下找redmine的資料夾)


紅框中的為host volume

以上為快速建立redmine的方法,在此做個紀錄。
下一篇再來說明系統備分和轉移的方法。

留言

張貼留言

這個網誌中的熱門文章

[Excel]將圖片放置於儲存格中

[軟體]AUTOCAD關於開啟圖面時,字型找不到,而要手動指定成 chineset.shx 字型檔問題

[MS SQL]查詢資料庫中每個資料表之列數與資料表大小(容量)資訊。Get size of all tables in database