Docker老司機來和你談談如何使用Alpine linux構建Python http項目


雲談

簡單介紹一下:Alpine Linux是一個社區開發的面向安全應用的輕量級 Linux 發行版,適合用來做路由器、防火牆、VPNs、VoIP 盒子 以及服務器的操作系統基於 uClibc 和 Busybox。

開始學習構建docker鏡像

課程講的是使用centos構建,自己也一直使用centos,但是有個問題:

就是centos鏡像比較大,安裝的東西比較多。真正的Linux其實用不了那么多,尤其是在使用Docker的時候,打包的次數越多,鏡像文件堆積的越多。 

所以選擇使用 alpine(阿爾卑斯,和那個糖名字一樣)。官方網站: 
https://alpinelinux.org/ 

有iOS的版本大約81mb,但是在docker上面使用的版本是更精簡的才 4mb。這個是沒有bash的,需要安裝一個bash。 

安裝了之后才 5mb。剩下的就是安裝各種軟件了。基礎的版本就是這樣小,而對於centos來說一個鏡像就要600多mb。更別說裝東西之后了。

 

構建一個alpine 鏡像

目標做兩個鏡像:一個數據庫的,一個Python的。 

然后把兩個連接起來一一一既能存儲也能查詢,那樣就可以了。充分利用docker的優勢,首先要構建一個基礎的python環境,然后再在這個環境的基礎上開發程序。 

否則的話每次從0構建太慢了。主要是因為網絡慢。 

 

特別要注意下:

 

其中 bash 是方便進入鏡像里面查看的。這個是設置一個國內清華大學的站點。因為直接拉官網的太慢了,有的時候就卡死了,當然也可以直接建立一個內網的私服,那樣就更快了。 

參考這個哥們的可以做個私服: 
https://my.oschina.net/funwun/blog/710877

然后打包一個基礎的python 包:

如果沒有報錯就可以了,python環境依賴的東西比較多,而且python在安裝的時候還需要gcc的編譯工具。 

使用 docker images 查看編譯后的鏡像: 
發現也已經幾百兆了,似乎明白了為啥要開發一個golang了。golang的文件也就 幾兆,對於鏡像來說真的是太好了。

 

使用docker images 查看鏡像:

構建http項目

再利用alpine-python鏡像做一個http服務 
vi main.py

 

編寫Dockerfile:

編譯:

運行http

 

很簡單,直接運行就可以了。但是有個問題,訪問端口沒結果。

報錯是這樣的: 

但剛開始沒有找到解決辦法。

后來發現已經解決,是python程序要主動綁定。

這樣寫就可以了。

總結

總的來說docker還是非常的好用的,但是遇到一個問題。使用python 和PHP的項目都需要安裝非常大的包。造成了本來就很小的鏡像,alpine 5mb的變成了幾百mb。大概明白了golang為適合雲服務了。因為golang最后編譯的文件才幾mb。 

 

再配合上alpine就太完美了。兩個加起來 幾十mb搞定。每次升級備份都非常的方便。而Java加上jdk再加上jar包依賴就變得臃腫起來了。

新智雲官網:http://www.enncloud.cn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM