Docker-Python-Alpine的踩坑日記
前言
實驗環境
python:3.7-alpine docker container
alpine更換鏡像源
例如修改成阿里鏡像源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
adduser創建一個新用戶
adduser -D [USERNAME]
參數-D表示無密碼
pip install numpy
apk update
apk add --no-cache g++
pip install numpy
pip install lxml
apk update
apk add --no-cache gcc musl-dev libxslt-dev
pip install lxml
取消文件中^M換行符
dos2unix [FILENAME]
Runtimeerror: generator raised StopIteration
當Python3.7-alpine運行Flask-web服務時,出現 Runtimeerror: generator raised StopIteration 報錯
參考鏈接:
- https://github.com/pypa/setuptools/issues/1285
- https://gitlab.com/ita1024/waf/issues
- https://github.com/spacetelescope/hstcal/issues/359
WAF與Python 3.7不兼容
解決方法
放棄Python3.7版本轉用Python3.6版本
#FROM python3.7-alpine
FROM python:3.6-alpine
通過刪除緩存來優化Alpine容器的體積
刪除apk下載緩存
# 安裝包時設置不保留緩存
apk add --no-cache vim
# 亦或者正常下載,最後刪除/var/lib/apk/×即可
刪除pip下載緩存
pip install -r requirement.txt --no-cache-dir
Alpine的shell只有sh並沒有bash
docker exec -it python:3.7-alpine sh
# not 'docker exec -it python:3.7-alpine bash'
不斷更新ing。。。
歡迎評論完善
真正需要注意的事項
Alpine作爲Python部署的基礎鏡像並不是最優解,未來推薦Debian
story:…