面面觀 | 使用alpinelinux 構建python http 項目

1,開始學習構建docker鏡像python

http://study.163.com/course/courseMain.htm?courseId=1273002 git

課程講的是使用centos構建。本身也一直使用centos,可是有個問題。 github

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

因此選擇使用 alpine(阿爾卑斯,和那個糖名字同樣)。新智雲官方網站:www.enncloud.cn docker

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

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

 

 

2,構建一個alpine 鏡像bash

 

目標,作2個鏡像,一個數據庫的,一個Python的。 網絡

而後鏈接起來。能存儲,能查詢,就能夠了。 工具

充分利用docker的優點,首先要構建一個基礎的python環境。 

而後再在這個環境的基礎上開發程序。 

不然的話每次從0構建太慢了。主要是由於網絡慢。 

mkdir alpine-python 

vi alpine-python/Dockerfile

 

特別要注意下:

 

 

其中 bash 是方便進入鏡像裏面查看的。 

這個是設置一個國內清華大學的站點。 

由於直接拉官網的太慢了。有的時候就卡死了。 

固然也能夠直接創建一個內網的私服。那樣就更快了。 

參考這個哥們的能夠作個私服: 

https://my.oschina.net/funwun/blog/710877

 

而後打包一個基礎的python 包:

 

 

若是沒有報錯就能夠了。python環境依賴的東西比較多呢。 

並且python在安裝的時候還須要gcc的編譯工具。 

使用 docker images 查看編譯後的鏡像: 

發現也已經 幾百兆了。彷佛明白了爲啥要開發一個golang了。 

golang的文件也就 幾兆吧。對於鏡像來講真的是太好了。

 

使用docker images 查看鏡像:

 

 

3,構建http項目

 

再利用alpine-python鏡像作一個http服務 

vi main.py

編寫Dockerfile

 

編譯:

 

 

4,運行http

直接運行就能夠了。可是有個問題,訪問端口沒結果。

 

 

報錯是這樣的: 

https://github.com/docker/docker/issues/2174 

可是尚未找到解決辦法。

 

已經解決,是python程序須要主動綁定。

 

這樣寫就能夠了。

 

4,總結

總的來講docker仍是很是的好用的,可是遇到一個問題。 

使用python 和PHP的項目都須要安裝很是大的包。 

形成了原本就很小的鏡像,alpine 5mb的變成了幾百mb。 

大概明白了golang爲適合雲服務了。由於golang,最後編譯的文件才幾mb。 

再配合上alpine就太完美了。兩個加起來 幾十mb搞定。 

每次升級備份都很是的方便。而Java加上jdk,在加上jar包依賴。 

就變得臃腫起來了。繼續研究。

 

 

相關文章
相關標籤/搜索