搜尋

搜尋結果

docker swarm 回到最基礎的群集組建
科技新知
MacauYeah・2025-11-21

雖然筆者都知道,全世界在講 k8s ,全世界都叫筆者放棄 docker swarm,但無獨有偶,docker swarm 還是有使用的價值。 你只有單個服務在運行,只想要做冗餘或分流。快速地用 docker swarm 做最小可行性産品,推出市場。 傳統的HA功能做到了,但你沒有中央匯整日誌的功能。而你也不想把事情攪得太複雜,使用docker swarm 可以讓你在任何一個管理節點上查看不同 container 的日誌。 你的客戶只提供VM,他可能有自己的k8s平台,但不讓你使用。自建一套docker swarm ,先入場,事後擴展再要求客戶提供k8s,對於客戶來講,先證明系統是有價值的,在金錢成本上或能力上,一定是件比較可以接受的事。 筆者之前介紹過一系列的 docker swarm 教學,但生成群集的部份一直沒有做介紹。因為實在太簡單,所以一直都沒有收納在教學內容當中。但現在考慮其完整性,以及為了讓大家感受一下它有多簡單,所以重新寫了組建群集的步驟。 組成群集 以前各家不同的軟件,想要起一個群集,要左攪右攪,又要重啟。而docker swarm真的很簡單,只要各機中有 docker ,再在各機中順序打指令就好。 node 1 使用docker swarm init docker swarm jointoken manager # node 1 gt; docker swarm init gt; docker swarm jointoken manager To add a manager to this swarm, run the following command docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 其餘的管理員節點就根據上述的提示,使用 docker swarm join token SWMTKN1xxxxxxxxxxxxxxxxxxxxxxx xxx.xxx.xxx.xxx2377 就好。只要總數的管理員節點有奇數個就可以了(包括當初的node 1)。即是1、3、5等都可以。這是因為在容錯的情況下,必需由管理節點作出多數決,才能容易地知道判斷是哪些節點出現問題。 如果不為容錯,只想增加可工作的機器,那麼我們只需要增加工作節點。我們可以在任何管理員節點生成docker swarm jointoken worker gt; docker swarm jointoken worker To add a worker to this swarm, run the following command docker swarm join token SWMTKN1yyyyyyyyyyyyyyyyyyyyyyy yyy.yyy.yyy.yyy2377 若想要檢查各個節點的工作狀態,在管理員節點上執行 docker node ls 看到了。 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION xxxxxxxxxxxxxxxxxxxxxxxxx node1hostname Ready Active Leader 28.5.1 yyyyyyyyyyyyyyyyyyyyyyyyy node2hostname Ready Active Reachable 28.5.1 全部教學請見 httpsmacauyeah.github.ioAProgrammerPreparesVMDockerNotesSwarmModeCommandCN.html

Github flow 沒有提及的發佈 - 佈署 | Release - Deployment
科技新知
MacauYeah・2024-08-23

不知道之前為大家介紹的github flow,大家覺得怎樣?好用嗎?今天,筆者又來講講筆者心中認為它沒有好好給出指引的地方。 我們的信心指數,其實沒有那麼高 在前文中,經過 pull request 、 code review 、 auto test ,道理上,開發者可以做的都已經做過了,然後就是等待發佈 Release。 對於單純的庫類型的程式碼,筆者認為,的確沒有事可以再做,實務上就是直接找人其他程多員試用最新版本,看看有沒有問題。只要 main master 上,明確的表示版本號的變更,就差不多等於直接發佈。有需要提供binary版本的,就還需要觸發上載binary的流程,但這個跟 pull request 觸發 auto test 差不多, auto test 成功後就上載。 對於服務類型的程式碼,例如 Web App 等,直接發佈到正式環境還是有些不妥吧?始終會即時影響到業務,我們至少有個測試場,經用戶做實際的業務操作去驗收。但這個時機,應該是在Github flow的什麼時候做? 在原始的git flow中,有一個叫做 develop 的相對穩定分支,僅次於 main 。它是功能開發完成後第一次pull request 的地方,我們可以用這個概念來做自動發佈到測試場。但若在github flow 中加入了這個 develop uat staging 分支,其實就等於複雜地回到過去傳統的 git flow中,對好多新手來講難以接受。Github flow 的成功簡化,其實很大依賴著自動化測試。現在的測試用例,並不再限於單元測試。就連整合測試,也可以經Docker等容器化技術去做,只要我們的自動化測試有足夠信心,就可以發佈。但反觀我們的 Web App 例子,我們認為自動化測試難似涵蓋所有情境,也難以開發。所以我們還在有個時間發佈到測試場,進行人工測試。 pull request 快速迭代 筆者結合自己的經驗,配上國外討論區 Stack overflow 的內容,筆者認為Github flow上進行 pull request 後,就是最好的發佈測試場時機。所以我們需要盡快進行驗收測試,完成後在Git commit上加上Tag,以示通過驗收測試,可以發佈正式環境的版本。 不過這個模式是有一個很重要的前題假設:快速迭代。當我們驗收完成後,盡可能快地發佈到正式環境,不然會阻礙下一個功能的pull request驗收,或是覆蓋了上一個pull request的驗收環境。 用反面的例子來說明,如果我們有很多功能需要驗收,或變化很多,或存在多輪的里程碑開發,我們就不適宜那上述模式。最保險的做法,還是回到傳統的 git flow ,引入 develop uat staging 分支。但如果大家還是那麼討厭傳統 git flow,筆者還是有另一個提議。 既不想回到傳統 git flow ,但又需要慬㥀的考慮驗收發佈流程 如果開發的功能變化比較大,需要多方面協調、測試、驗收,經歷多次里程碑後,才有一個對外發佈的版本,大家可以考慮分開 Repository 做開發。例如 v1,v2的 Repository 完全獨立。 v1 是已發佈的版本,有獨立的測試場,任何即時候需要修正,就在v1的 Repository 做 pull request。 v2 則是未發佈版本,亦有獨立的測試場。加入任何新功能後,就在v2的 Repository 做 pull request,用自己專用的測試場做驗收。到 v2 正式發佈後, v1 就封存處理,再開一個 v3 作為下一個大版本的開發。這個模式,那怕在庫類型的程式碼也用得上。 這樣做的好處是 git Repository 和歷史記錄都會獨立,自動發佈的腳本程也會簡單明確一些。壞處則是 v1 v2 難以做功能對比,我們只能靠人腦記著 v1 有沒有什麼後期加入的修正和功能,需要同步移植到 v2 中 相對的,著是同一個Repository,可以利用merge 功能確保 v1 有的,v2 都己處理,只是必需要很懂處理版本衝突問題。

數字教育引領塑造未來
文化創意
陳康妮・2024-03-06

2024年3月6日 澳門日報 數字教育引領塑造未來 澳門作為一個國際化的城市,一直以來致力於提供高質量的教育,為學生們塑造未來。在這個快速發展的時代,數字教育成為了教育領域的一個重要焦點。數字技術的快速發展和應用,為教育帶來了全新的機遇和挑戰。澳門正積極引領教育,將數字教育納入教育體系,以培養學生的數字素養和創新能力,為他們的未來鋪平道路。 教導數字世界中思考 數字教育不僅僅是指教授學生如何使用電腦和互聯網,更重要的是教導他們在數字世界中如何思考、解決問題和創造。這需要學生具備數字素養,即理解和應用數字技術的能力。澳門教育體系已經意識到這一點,並將數字素養納入學校課程中。學生們在早期階段就接觸到基礎的數字技能,學習如何使用計算機、互聯網和其他數字工具進行資訊搜索和處理。隨着他們的成長,還學習如何利用數字技術進行創新和解決現實世界的問題。 數字教育的核心是培養學生的創新思維和問題解決能力。這需要學生學會提出問題、分析問題、找到解決方案,並將其應用到實際情境中。在澳門的教育體系中,學生們通過各種數字工具和平台,如編程、虛擬現實和人工智能,來培養這些能力。他們被鼓勵參與到跨學科的項目中,與其他學科的知識相結合,共同解決複雜的問題。這樣的教育模式不僅能夠激發學生的創造力和想像力,還能夠培養他們的合作和溝通能力。 教師提能力應對變革 澳門教育體系還重視教師的專業發展,以確保他們能夠教授和指導學生進行數字教育。教師們參加各種培訓課程和研討會,學習如何運用數字技術來教授不同的學科。他們也被鼓勵參與到數字教育的研究和創新中,將最新的數字技術應用到教學實踐中。這樣的支持和培訓使教師們能夠成為數字教育的引領者,激發學生的學習興趣和動力。 澳門的數字教育還注重與其他國家和地區的合作交流。通過與國際教育機構和學校的聯繫,澳門的教育體系能夠分享最新的教學方法和經驗,並將其應用到實際中。這種國際合作不僅能夠豐富學生的學習經驗,還能夠促進教育領域的創新和發展。 數字教育的引入和推廣,為澳門的教育體系帶來了巨大的機遇和挑戰。通過培養學生的數字素養和創新能力,澳門的學生將能夠更好地適應未來的數字化社會和職場。同時,教師們也需要不斷提升自己的專業知識和技能,以應對教育領域的變革和挑戰。 澳門引領教育,塑造未來。數字教育的推廣和應用,將為澳門的學生帶來更廣闊的發展空間,並為他們的未來鋪平道路。我們相信,通過持續的努力和創新,澳門的教育體系將繼續在數字化時代中引領教育,為學生們打造更美好的未來。 澳門教育工作者 陳康妮