日期:2022/5/24~27
起因:
這個系列,其實就是因為最近可能比較沒有專案,然後最近又要研究社網還有一些東西,所以就需要了解一些跟傳統部署比較相關的內容,所以就像把一些零碎時間折騰伺服器的內容做一個紀錄。(但是每一篇應該不會很長,關於docker這類詳細的部分我之後應該還會整理一份筆記,但就不放在這裡了)
小插曲:
話說事情是這樣的,既然要開始折騰伺服器了,但docker這個基本上是一定要碰的,於是我就去載了docker的m1版本,雖然當時在舊電腦也載過,但是當時電腦的效能真的不行,所以就沒有怎麼玩。但是不管我怎麼安裝docker都一直會抱錯(所以我一開始誤以為是docker不支援m1)
結果在修改了docker配置文件中的dataFolder中的使用者名稱之後就好了
其實是因為我在舊mac到新mac做系統遷移的過程中又更換使用者名稱,但是配置檔案還是保留之前的,所以就導致,在使用舊的配置文件新增資料的時候找不到路徑從而報錯
用docker要主意的幾個關鍵點
- 在container中的flask一定要將host設定為0.0.0.0(好像是表示允許所有的ip地址)才能在做端口映射的時候被本機正常進行訪問
- 在使用docker container run的時候一定要進行端口映射 例如-p 5000:5000 (如果沒有的話,就算有在Dockerfile裡面expose端口,也會默認是將container內外都是隔離的狀況)
- 然後有使用mac的話5000端口可能會被airplay receiver劫持,所以要關掉
- 有時候測完會堆積很多的廢image
總結:
因為之前都是只用用github action 自動部署到azure,很方便,連yml都是自動產生的,所以沒有接觸這麼多偏底層的東西。但是這次是認真去玩docker,然後也開始去接觸一些yml和其他的東西,也希望可以使用docker結合ssh完成遠端部署,增加技能點😂。然後這幾天的話主要就是在了解docker的結構然後一些常用指令,以及在container之間的通訊(bind mount和volumes)和跨平台(通過dockerhub)。
但我現在還在思考如果是docker然後靜態檔案都是採用volume的方式掛載到container那我要怎麼同步本地的靜態文件到伺服器(還在考慮要用ftp還是github)。然後就是用了github,發現我好像根本不用去載虛擬機,因為像是ubuntu這種常用的linux都直接有官方的image可以使用,而且跑起來還很快(可能比虛擬機快很多)。