如何30分鐘內使用docker架設redmine(DB using postgresql)
本篇說明如何快速建置redmine於decker環境中,使用docker的環境架設系統的目的是在於不影響其主系統,也利於後續維護和系統轉移(當然也是因為要系統轉移所以遇到了不少docker的坑)。
本篇大多使用工具和UI取代docker的command,以減少進入的門檻。但是還是先說一下,系統架設很簡單,後續的維護和備份還原又是另外一門學問,所以要真正營運的系統還是要交給專業的人員來做系統管理。
那就直接開始吧~~~
環境:
Win10 pro
事前準備:
Docker環境架設:
Docker環境安裝 pass,請自行google。注意事項,在Windows使用Docker時是使用微軟Hyper-v的虛擬機器的技術必須要Win10專業版以上才有支援此功能。另外因為是虛擬機器的功能,所以BISO的虛擬服務需要啟用,還有其他的VM不可同時使用。(可以用cmd去啟停Hyper-v的服務,執行完命令後必須要重開機)
啟用
bcdedit
/set hypervisorlaunchtype auto
|
停用
bcdedit
/set hypervisorlaunchtype off
|
再來是使用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的資料夾)
網誌管理員已經移除這則留言。
回覆刪除