環境搭建
- 首先在centos中安裝 docker 和 docker-compose
由於yum 暫時只有docker 沒有docker-compose 所以可以參考 菜鳥教程 docker安裝 docker 和 docker-compose
Compose 是用於定義和運行多容器 Docker 應用程序的工具。通過 Compose,您可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。
簡單來說:通過docker-compose.yml的指引,可以將多個容器按規則作為一個應用一起啟動(compose 直譯本身就是:組成)
- 通過源碼構建wekan 需要通過git在github上拉取wekan源碼,所以需要安裝git,這里直接通過yum安裝
yum install git
獲取wekan代碼
git clone https://github.com/wekan/wekan
wekan部署配置
修改docker-compose.yml配置文件(配置組合 wekan 和 wekan-db 的docker容器)
# 進入git拉取的wekan代碼
cd wekan
# 修改docker-compose.yml (參數含義可以看docker compose的文檔)
vim docker-compose.yml
修改wekan的訪問端口
services:
...
wekan:
...
# wekan的鏡像,通過修改版本號可以切換版本和版本升級(切換版本前注意數據備份)
image: wekanteam/wekan:v4.96
networks:
- wekan-tier
# 將宿主機的80端口映射到wekan容器的8080端口,這樣就可以通過:**宿主機的ip:80** 直接訪問wekan (這里要理解docker容器和虛擬機作用相似)
ports:
- 80:8080
environment:
# 訪問wekan的根地址,不修改只能在本機訪問 ( 官方wiki原文地址: https://github.com/wekan/wekan/wiki/Windows Windows >> a) Bundle with Windows Node+MongoDB >> 6.Download start-wekan.bat to your bundle directory. Default settins are: ROOT_URL=http://localhost and PORT=80, so it works only in local compatible browser. You can edit ROOT_URL to be or http://YOUR-IP-ADDRESS so it works on local network with http://YOUR-IP-ADDRESS. 雖然是windows環境下的安裝介紹,但是參數作用猜想應該是一致的)
- ROOT_URL=http://your ip address
- MALL_URL=smtp:郵箱賬號:郵箱密碼@郵件服務器地址:郵件服務器smtp端口號/?ignoreTLS=true&tls={rejectUnauthorized:false}
# qq郵箱示例如下(需要到qq郵箱設置中開通smtp服務,並獲取密碼)
# - MAIL_URL=smtp://8888888@qq.com:password@smtp.qq.com:465/?ignoreTLS=true&tls={rejectUnauthorized:false}
給mongodb數據庫的容器wekan-db容器設置端口映射,
services:
...
wekandb:
...
networks:
- wekan-tier
# wekan-db默認沒有ports,需要在networks:- wekan-tier下方添加 ports: - 27017:27017 意思是將宿主機的27016端口映射給wekan-db的27017端口,這樣遠程數據庫客戶端就可以通過:**宿主機:27016** 連接到容器中的mongodb
ports:
- 27016:27017
接下來就可以通過docker 構建 wekan了,以下來自官方wiki
Then you can build Wekan with
docker-compose up -d --build
Example for latest Wekan, port 2000 to Docker Wekan internal port 8080:
docker run -d --restart=always --name wekan-db mongo:4
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "WITH_API=true" -e "MONGO_URL=mongodb://wekan-db:27017/wekan" -e "ROOT_URL=http://192.168.1.200:80" -p 80:8080 quay.io/wekan/wekan
至此,wekan部署完成,輸入地址即可訪問wekan
如果wekan 已經構建需要修改 wekan-db(mongodb)容器的端口映射,使遠程客戶端可以連接,也可以參照上面的方法直接修改docker-compose.yml 的ports,但是此時需要重啟docker后然后執行
# 先重啟docker
systemctl restart docker
# 再啟動應用
docker-compose up -d
以上解決辦法經過實踐,mongodb中數據不會丟失(如果mongodb 可能存在 版本升級的情況一定要做數據備份)
如果不重啟docker直接重啟應用可能會報如下錯誤
ERROR: for wekandb Cannot start service wekandb: driver failed programming external connectivity on endpoint wekan-db (60fb3e1eac0a6bc7f259b586b8c01335a01e7efb9632ca95d01abcea8a681ee7): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 27017 -j DNAT --to-destination 172.18.0.2:27017 ! -i br-c830cc6c5192: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: Encountered errors while bringing up the project.
[root@dlike wekan]# docker stop wekan-db
wekan-db
[root@dlike wekan]# docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Removing wekan-db
Recreating 50f36e859d7c_wekan-db ...
Recreating 50f36e859d7c_wekan-db ... error
參考