搜尋

搜尋結果

Docker境參數化 - Arg VS Env
科技新知
MacauYeah・2024-03-26

Docker Variable control 我們在Docker Image的打包時,最簡單當然就是每個步驟都使用最新版本。例如Docker Base Image,大家可能選用latest tag,安裝linux package (Linux包),也可能就apt install / yum 安裝最新的穩定版本。但如果我們想要更好地做測試,就要使用指定版本,方便追蹤問題。而Docker在打包和運行時,都有不同的方式讓大家定義或覆寫指定參數。 Docker build arg 我們先從打包Image開始。 例如我們需要使用一個Base image為 ubuntu,版本預設為22.04,但有需要時可以經build指令覆寫,可以這樣寫 ARG ubuntu_version=22.04 FROM ubuntu:${ubuntu_version} # default ubuntu_version=22.04 docker image build -t test2204 ./ # or overwrite by --build-arg docker image build -t test2404 --build-arg="ubuntu_version=24.04" 雖然Dockerfile的RUN指令都是使用linux shell,但在Dockerfile中想表達條件控制(if else statment)就不太易看。在外部加入script做控制,是另一個可行的後備選擇,它更可以連image名字也進行參數化。 # in bash script, you also can if [ $beta == true ] then ubuntu_version=24.04 else ubuntu_version=22.04 fi docker image build -t test:${ubuntu_version} --build-arg ubuntu_version=${ubuntu_version} Docker Container Run and Docker Compose 一般來講,Linux Container 在執行時,就等於進入Linux Shell。也就是,我們可以使用Shell中的環境變數。 我們在打包Image前,已經可以在Dockerfile中定義自己的ENV數參(也就是環境變數)。與前面的Build Arg有所不同的是,ENV是定義在Dockerfile中,在Container運行時以環境變數的形式存在,它也可以在運行中被改變。而Arg,則只在打包Image時存在,運行期間就不存在了。(當然,你在打包時,用Arg傳入Env,以運到這個目的。) 另一個更特別的性質是,那怕ENV沒有定義在Dockerfile中,我們運行時也可以加入更多的環境變數,大家就當成是一般Linux操作,隨時在自己的shell中加入變數。 # -e, --env for inline variable # --env-file for file docker container run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash 同樣地Docker compose,也支援環境變數。筆者建議environment可以使用Array格式,日後可以更方便地直接改為env_file。 # docker-compose.yaml services: ubuntu: image: ubuntu:22.04 environment: - RACK_ENV=development - SHOW=true - USER_INPUT 上述的寫法沒有任何問題,不過如果你的docker-compose.yaml是放在git等版本控制中,你更新環境變數就有可能會影響到其他人,這時你就會想轉成env_file。 docker-compose.yaml預設就會讀當前資料夾的.env,就算不存在,也可以正常運行。(當然,大家的Image/Container應該要有預設值) # docker-compose.yaml services: ubuntu: image: ubuntu:22.04 # if env_file is not defined, it will load .env. # or you can load the specific file. # env_file: # - ./a.env env_file內,每一行就是一個變數 # .env or a.env RACK_ENV=development SHOW=true USER_INPUT 使用預設的.env還有一個好處,就是我們可以把docker-compose.yaml也變成受環境變數控制。 # docker-compose.yaml with variable control, only works in default .env services: ubuntu: image: ubuntu:${ubuntu_version} # .env ubuntu_version=22.04

2022第十屆澳門國際旅遊﹙產業﹚博覽會 “搖一搖 瞬間遊世界” 線上遊戲
生活在我城
Cheers!・2022-09-16

2022 第十屆澳門國際旅遊﹙產業﹚博覽會將於 9 月 23 - 25 日於澳門威尼斯人金光會展A及B館舉行,現場會有各種特色展區展位、旅遊及相關產品,以及豐富節目,包括澳門及葡國特色美食、文創展區及“麥麥樂園”等!如果大家想去旅行或想了解更多當地旅遊資訊,就要去看看啦! “搖一搖 瞬間環遊世界” 線上遊戲 玩法介紹 上線日期:9月16日上午10時至9月25日下午5時 遊戲玩法:參與“搖一搖 瞬間環遊世界”線上遊戲,以AR及面容識別技術讓參加者體驗仿如置身於全球各地著名景點現場,瞬間於不同景點打卡拍照!線上遊戲包括了十個海外著名旅遊景點,加一個本澳旅遊景點! 參與線上遊戲玩家有機會搖出澳門景點,可獲得$40元展覽消費額憑證;如若玩家同時線上登記入場券亦可獲$10元展覽消費額憑證,只需到場消費達$250即可參與會場大抽獎,隨時獲得豐富禮品!首4,000名客戶到博覽會現場澳門旅遊局展位更可獲得精美個性化名信片乙張,數量有限,萬勿錯過。 1. 用戶透過線上連結或二維碼進入遊戲網頁;選擇「開始旅程」; 2. 透過AR及面容識別技術追蹤玩家動作,讓玩家於手機內仿如置身著名景點的現場環境,玩家可選擇拍照或拍視頻,下載到玩家手機相簿紀念。每個景點停留片刻後,畫面上出現提示讓玩家把手機搖一搖,搖出下一個驚喜旅遊景點。 3.“搖一搖 瞬間環遊世界”線上遊戲包括十個海外著名旅遊景點及一個澳門名勝,玩家把手機搖一搖,即可搖出下一個驚喜旅遊景點。 4.為增加遊戲趣味,分享線上遊戲給朋友可解鎖所有地區行程! 5.玩家完成拍攝後,可以點選下載按鈕把照片或影片儲存到手機之媒體庫,亦可點選分享按鈕,分享給朋友或社交媒體平台。 6. 參與“搖一搖 瞬間環遊世界”線上遊戲有機會獲得高達$50元展覽消費額憑證,只要到澳門國際旅遊﹙產業﹚博覽會消費即可參與會場抽獎,著數多多! $10 抽獎消費額憑證 領取方法:於遊戲內或官方網站進行線上預約入場,到會場可領取實體券; $40 抽獎消費額憑證 參與“搖一搖 瞬間環遊世界” 線上遊戲玩家有機會搖出澳門景點,可獲得$40元展覽消費額憑證,中獎者憑電子券及所需之消費單據到會場大抽獎櫃檯參與抽獎。此項目為隨機抽獎派送,數量有限。 $10 抽獎消費額憑證 +$40 抽獎消費額憑證 +消費額$250以上,集齊$300元以上可參加會場大抽獎! 7.參與“搖一搖 瞬間環遊世界”線上遊戲到會場更可領取驚喜小禮品! 玩家參與線上遊戲除了可獲得虛擬旅行拍攝樂趣,更可憑遊戲頁面內之二維碼到會場澳門旅遊局櫃檯免費領取他們獨一無二個性化名信片乙張,數量有限,送完即止,萬勿錯過! 遊戲入口: