本文使用「署名 4.0 國際 (CC BY 4.0)」許可協(xié)議,歡迎轉載、或重新修改使用,但需要注明來(lái)源。 署名 4.0 國際 (CC BY 4.0)
本文作者: 蘇洋
創(chuàng )建時(shí)間: 2019年03月30日
統計字數: 5170字
閱讀時(shí)間: 11分鐘閱讀
本文鏈接: https://soulteary.com/2019/03/30/construct-confluence-with-docker.html
小型團隊協(xié)同,或者想花錢(qián)買(mǎi)個(gè)省心,Confluence 是比較好的選擇之一。但是最近安裝 Confluence ,發(fā)現官方和網(wǎng)上的安裝介紹都比較“落后”低效,所以有了本篇內容。
本文將介紹如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看過(guò)之前的內容,跟隨本文應該能在十分鐘內解決戰斗。
https://hub.docker.com/r/atlassian/confluence-server/tags
這里會(huì )講解兩個(gè)有代表性的版本: 6.4
和 6.15
https://dev.mysql.com/downloads/connector/j/5.1.html
如果你也選擇使用 MySQL 作為儲存后端,需要下載此文件,一般情況下你會(huì )獲得 mysql-connector-java-5.1.47.tar.gz 的壓縮包,解壓縮之后,獲得 mysql-connector-java-5.1.47.jar,我們稍后會(huì )用到。
先說(shuō)老版本,如果你只是需要基礎的 Wiki 功能,那么下面的配置文件應該能夠滿(mǎn)足你的需求。
version: '3' services: confluence: image: atlassian/confluence-server:6.4.3-alpine expose: - 8090 - 8091 networks: - traefik labels: - "traefik.enable=true" - "traefik.port=8090" - "traefik.frontend.rule=Host:${DOMAIN}" - "traefik.frontend.entryPoints=http,https" volumes: - ./data:/var/atlassian/application-data/confluence - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar networks: traefik: external: true
將上面的文件保存為 docker-compose.yml 后,我們創(chuàng )建另外基礎配置文件 **.env **,和上面的配置一樣簡(jiǎn)單,文件內容可以是下面這樣。
DOMAIN=wiki.lab.com
將 docker-compose.yml 、.env、mysql-connector-java-5.1.47.jar 放在同一目錄,如果此刻你的 Traefik 已經(jīng)就緒,那么執行 docker-compose up
,你的服務(wù)便啟動(dòng)起來(lái)了。
直接訪(fǎng)問(wèn)你配置好的域名,比如例子中的 wiki.lab.com
,你就可以進(jìn)行 Confluence 的 Web 界面配置啦。如果你還不會(huì )使用 Traefik ,那么可以翻閱歷史文章,同樣是一些十分鐘以?xún)鹊慕坛獭?/p>
如果你選擇將 Confluence 部署在公網(wǎng),面對每天很是煩人的掃描器,不妨簡(jiǎn)單添加 Basic Auth
認證,將這些惡意請求攔截在外面。
因為使用了 Traefik ,所以添加這個(gè)功能十分簡(jiǎn)單,只需要兩步:
第一步,在 docker-compose.yml 的 labels
字段內添加下面的內容。
- "traefik.frontend.auth.basic=${BASIC_AUTH}"
第二步,執行 htpasswd -nb user user
,得到一段包含用戶(hù)名和加密后的密碼的文本字符串,譬如這樣:user:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41
,接著(zhù)將內容添加到 .env 中:
BASIC_AUTH=user:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41
當再有掃描器想直接對應用進(jìn)行掃描的時(shí)候,就會(huì )被 Basic Auth 擋在外面啦。
當你安裝完畢,開(kāi)始使用的時(shí)候,會(huì )發(fā)現界面的右上角會(huì )提示一個(gè)警告信息。
Can't check base URL
官方知識庫中有這個(gè)問(wèn)題,如果你使用的也是低版本(6.6)之前,其實(shí)可以通過(guò)配置 Hosts
來(lái)解決問(wèn)題。
比如在 docker-compose.yml 中添加一段聲明,讓?xiě)?a href='http://wap.friendlycc.com.cn/serverlease/' target='_blank'>服務(wù)器查找本機上應用地址,而非一定要訪(fǎng)問(wèn)公網(wǎng)地址的應用,參考配置如下:
version: '3' services: confluence: image: atlassian/confluence-server:6.4.3-alpine expose: - 8090 - 8091 networks: - traefik labels: - "traefik.enable=true" - "traefik.port=8090" - "traefik.frontend.rule=Host:${DOMAIN}" - "traefik.frontend.entryPoints=http,https" volumes: - ./data:/var/atlassian/application-data/confluence - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar extra_hosts: - "${DOMAIN}:127.0.0.1" networks: traefik: external: true
是不是十分簡(jiǎn)單,如果你的需求是基礎使用,上述的配置應該已經(jīng)能夠滿(mǎn)足你的需求了。
接著(zhù)我們聊聊如何使用最新版本的軟件,因為我們使用了容器,所以更新版本十分簡(jiǎn)單,在配置文件中修改鏡像的版本號就好了。比如,我想將 6.4.3
這個(gè)低版升級到其他版本,只需要將配置中的 6.4.3
改為 6.15.1
即可,例如 atlassian/confluence-server:6.15.1-alpine
。
其他的基本和老版本軟件使用一致。不過(guò)這里會(huì )有幾個(gè)小問(wèn)題,需要額外解決一下。
WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
要解決這個(gè)問(wèn)題,可以選擇配置加密的 MySQL 連接,并更新容器中的ssl/' target='_blank'>證書(shū),也可以選擇添加參數,關(guān)閉強制使用加密連接請求,后者更簡(jiǎn)單,如果要求不高,可以這么做。
編輯 data/confluence.cfg.xml 文件中的 hibernate.connection.url
,在連接地址后添加 ?useSSL=false
參數,重啟應用即可。
新版本的軟件邏輯中,有針對請求中帶有 Basic Auth
進(jìn)行額外處理:如果在上面配置了 Basic Auth ,那么應用會(huì )提示驗證失敗,不能登錄系統。
這個(gè)顯然不是我們添加 Basic Auth 的用意,并且實(shí)際使用中,也不推薦直接將 Confluence 的認證接口對外。
解決方案很簡(jiǎn)單,在 docker-compose.yml
中添加一行 - "traefik.frontend.auth.basic.removeHeader=true"
,Traefik 的驗證信息將僅針對 Traefik 使用,在反向代理應用的時(shí)候,HTTP 請求中的驗證信息會(huì )被刪除掉。
同樣的,重啟應用,這個(gè)問(wèn)題就解決了。
因為我們使用 Traefik 掛載證書(shū),應用實(shí)際運行在代理服務(wù)器背后,當使用管理員訪(fǎng)問(wèn)控制臺,會(huì )看到一個(gè)警告信息。
您的 URL 不匹配
Confluence 的基本URL設置為http://wiki.lab.com,但您正從https://wiki.lab.com訪(fǎng)問(wèn) Confluence。
考慮應用的正常使用,我們通常會(huì )將協(xié)議進(jìn)行修正,比如將站點(diǎn)基礎URL修正為 https
。但是在修正之后,你會(huì )收到另外一個(gè)警告。
Tomcat 配置不正確
Tomcat server.xml 配置不正確:
scheme 應為 ‘https'
proxyName 應為 ‘YOUR_DOMAIN_URI'
proxyPort 應為 ‘443'
原因是比較新的版本的應用,健康檢查邏輯附帶了端口和協(xié)議判斷,低版本可以直接使用 Traefik 反代掛載證書(shū)的幸??鞓?lè )日子一去不復返。
解決問(wèn)題需要分為三步。
第一步,將容器內的 Tomcat 運行配置 server.xml
拷貝到本地(da5582a01879 為 docker ps 獲取的容器PID)。
docker cp da5582a01879:/opt/atlassian/confluence/conf/server.xml .
第二步,將配置中端口為 8090 的 Connector 的配置更新為下面的內容(尤其注意最后一行內容):
<Connector port="8090" connectionTimeout="20000" redirectPort="8443" maxThreads="48" minSpareThreads="10" enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8" protocol="org.apache.coyote.http11.Http11NioProtocol" proxyName="wiki.lab.com" proxyPort="443" scheme="https"/>
第三步,更新 docker-compose.yml
配置文件。
在 volumes
字段中添加內容:
- ./server.xml:/opt/atlassian/confluence/conf/server.xml
同時(shí)刪除 extra_hosts
字段內容。
重啟應用,一切正常。
為了方便使用,這里給出完整的參考配置。
version: '3' services: confluence: image: atlassian/confluence-server:6.15.1-alpine expose: - 8090 - 8091 networks: - traefik labels: - "traefik.enable=true" - "traefik.port=8090" - "traefik.frontend.rule=Host:${DOMAIN}" - "traefik.frontend.entryPoints=http,https" - "traefik.frontend.auth.basic.removeHeader=true" - "traefik.frontend.auth.basic=${BASIC_AUTH}" volumes: - ./data:/var/atlassian/application-data/confluence - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar - ./server.xml:/opt/atlassian/confluence/conf/server.xml networks: traefik: external: true
雖然對于團隊來(lái)說(shuō) Confluence 是一個(gè)不錯的方案,但是實(shí)際針對個(gè)人/擁有定制能力的團隊而言,使用完全開(kāi)源免費的 WordPress 或許會(huì )更好,下一篇我將介紹 WordPress 用作知識管理用途的一些定制處理。
以上就是使用 Docker 搭建 Confluence的詳細內容,更多關(guān)于Docker 搭建 Confluence的資料請關(guān)注腳本之家其它相關(guān)文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站