由于五一前的這周工作需求不是很多,便趁著這個機會將博客遷移到了docker中,雖說網上docker相關文章有很多,第一次實踐的我還是遇到了一些小問題,現在便來總結一下。
在這里我要推薦的是docker_practice,有中英文版本,很多細節知識都有講到,非常適合入門學習。其次是docker hub,可以其上面尋找自己需要的一些鏡像,這樣可以有助于自己比較方便地寫出自己想要的dockerfile。
我認為docker鏡像最主要的好處是可復用,所以制作時需要注意生成鏡像的大小,以便于網絡傳輸。以dotnetcore為例,官方有專門的runtime鏡像,build鏡像,sdk鏡像等等,根據自己的實際需求選擇恰好滿足自己需求的基礎鏡像就好。同時,dockerfile內能使用一條命令盡量使用一條命令,減少鏡像的生成層數和生成時間。docker運行和預期不符時,善于使用docker logs來查看日志,利用好Google能解決許多問題。
下面是博客的dockerfile(本體fork自YuukoBlog,個人只是做了一些微小的修改...),
其中dbdata目錄是為了掛載本地的sqllite,防止以后刪除容器博客數據丟失。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
FROM microsoft /dotnet :latest RUN mkdir /package \ && mkdir /dotnetapp Copy . /package RUN dotnet restore package /YuukoBlog/src/YuukoBlog/YuukoBlog .csproj \ && dotnet publish package /YuukoBlog/src/YuukoBlog/YuukoBlog .csproj -c Release -o /dotnetapp \ && rm -rf /package VOLUME /dotnetapp/dbdata WORKDIR /dotnetapp ENV ASPNETCORE_URLS http: // *:5000 EXPOSE 5000 ENTRYPOINT [ "dotnet" , "YuukoBlog.dll" ] |