大家好,
自從聽到 docker 這個技術,就在思考對於我們的工作有沒有幫助。但看了一些文章,似乎很少關於實務面的討論(可能我看得太少)。
目前公司有個案子,要將系統部署到100台桌機(姑且稱為POS機)。於是重新思考 docker 是否有幫助?先說說我粗淺的認知,請大家指正:
1.首先,每台POS機 要安裝 docker
2.將系統打包成 docker image,部署到POS機,啟動 docker ,就可以使用系統了。
3.如果有新版程式,再包一次 docker image ,整包更新到POS,就完成了。
我想得會不會太簡單了?
以上是技術面的問題。架構面我有很大的疑問:
1.每個POS機都會有自已的config,比如說 web.config、或是連接的印表機的名稱,是不能被 docker image 蓋掉的,這部份要怎麼處理?
2.db 的部份,大家會包在 docker裡面嗎? 不會的話,怎麼部署? 會的話,如何解決資料不會被蓋掉的問題?
不知道我的思考方向對不對?如果我完全搞錯docker的用途,或是用詞不精確,也請不吝指正,謝謝大家。
docker 的運用在於將程式碼與環境變數包起來
docker 是可以引用外部參數的 ...
例如說我要啟動一個 nginx 那每個人的網頁目錄不同, 名稱不同要如何處理 ?
正常是會這樣處理的
docker run --name mynginx --mount type=bind,source=/var/www,target=/usr/share/nginx/html,readonly --mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx
你的需求是 POS機 ...應該不會有 DB
正常 DB 會這樣處理
docker run --name mssql-server-linux \
-e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pa$$w0rd' \
-p 1433:1433 \
-v /home/{user}/db:/var/opt/mssql/advantruework \
-d \
microsoft/mssql-server-linux
使用 docker-compose,把 web.config 使用 volume mount 的方式,就可以達到每一台的 web.config 獨立了