摘要:基于鏡像構建自己的鏡像官方鏡像地址拉取官方的鏡像交互式方式生成一個容器進入交互式容器,查看當前版本設置的阿里云鏡像源確認一下是否配置成功我們的使用的是系統使用的是包管理器命令如默認的鏡像源也比較慢,我們也換成國內的設
基于alpine鏡像構建自己的flask鏡像
python官方鏡像地址:
http://hub.docker.com/_/python
拉取官方的python鏡像
docker pull python:3.7-alpine
交互式方式生成一個python容器
docker run -it --name python37 --rm python:3.7-alpine /bin/sh
進入交互式容器,查看當前python版本
python --version
設置pip的阿里云鏡像源
mkdir $HOME/.pip/ tee $HOME/.pip/pip.conf <<-"EOF" [global] trusted-host=mirrors.aliyun.com index-url=https://mirrors.aliyun.com/pypi/simple EOF
確認一下是否配置成功
cat $HOME/.pip/pip.conf
我們的python使用的是alpine系統
alpine使用的是apk包管理器
命令如:
apk add apk update apk del
alpine默認的鏡像源也比較慢,我們也換成國內的
設置alpine鏡像源
echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories
設置后要執行
apk update && apk upgrade
安裝flask
python -m pip install -U flask
編寫test.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" @app.route("/abc") def abc(): return "Hello abc" if __name__ == "__main__": app.run()
第一種執行這個py文件方式
python test.py
然后在另一個終端以交互式方式進入這個python容器
docker exec -it python37 /bin/sh
下載curl命令
apk add curl
使用curl訪問flask服務
curl localhost:5000 curl localhost:5000/abc
第二種執行這個py文件的方式
# 設置環境變量 export FLASK_APP=/test.py # flask運行起來 flask run
第三種執行這個py文件的方式
FLASK_APP=test.py flask run
根據上面的操作步驟,我們可以來編寫Dockerfile生成自己的flask鏡像
先退出上面的交互式容器,按:ctrl+D
創建一個flask目錄,并進入
mkdir flask cd flask
創建一個pip.conf文件,將pip鏡像源寫進去
tee pip.conf <<-"EOF" [global] trusted-host=mirrors.aliyun.com index-url=https://mirrors.aliyun.com/pypi/simple EOF
編寫Dockerfile文件
FROM python:3.7-alpine RUN echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories RUN apk update && apk upgrade RUN mkdir $HOME/.pip/ COPY ./pip.conf $HOME/.pip/ RUN pip install flask EXPOSE 5000 CMD ["flask", "run"]
執行docker build命令進行鏡像構建
docker build -t myflask:1.0 .
確認是否構建成功
docker images
ok!鏡像構建成功!
怎么運行??
創建一個myapp目錄
mkdir myapp
放入上面的test.py文件
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" @app.route("/abc") def abc(): return "Hello abc" if __name__ == "__main__": app.run()
然后通過剛剛構建的鏡像生成我們的容器
docker run --name myapp --rm -d -p 8080:5000 -v ~/myapp:/app -e FLASK_APP=/app/test.py myflask:1.0
確認容器是否啟動
docker ps
恩,啟動了!
但是我們無法通過外網訪問服務器ip的8080端口訪問到容器里面
為什么?
flash默認只允許本機訪問!
怎么辦?
停掉剛剛生成的容器
docker stop myapp
重新生成容器,指定允許ip為0.0.0.0,然外部可以訪問
docker run --name myapp --rm -d -p 8080:5000 -v ~/myapp:/app -e FLASK_APP=/app/test.py myflask:1.0 flask run -h 0.0.0.0
通過外網瀏覽器訪問
http://服務器ip:8080
ok,可以訪問到flask搭建的程序了!
原文鏈接:http://www.mi360.cn/articles/34
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43881.html
摘要:基于鏡像構建自己的鏡像官方鏡像地址拉取官方的鏡像交互式方式生成一個容器進入交互式容器,查看當前版本設置的阿里云鏡像源確認一下是否配置成功我們的使用的是系統使用的是包管理器命令如默認的鏡像源也比較慢,我們也換成國內的設 基于alpine鏡像構建自己的flask鏡像 python官方鏡像地址: http://hub.docker.com/_/python 拉取官方的python鏡像 doc...
摘要:現在有了之后,部署方式變了更加容易,不容易出現配置錯誤,環境不一致問題。實際應用中,經常遇到多個容器相配合運行一套應用程序的情況。所以想要將應用運行在容器中,該容器必須將該應用所有的環境依賴安裝好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 ??以前部署應用,需要各種環境配置,各種shell操作...
摘要:現在有了之后,部署方式變了更加容易,不容易出現配置錯誤,環境不一致問題。實際應用中,經常遇到多個容器相配合運行一套應用程序的情況。所以想要將應用運行在容器中,該容器必須將該應用所有的環境依賴安裝好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 ??以前部署應用,需要各種環境配置,各種shell操作...
摘要:后來真正用的時候才發覺,這個簡直是個神器。容器可以被創建啟動停止刪除暫停等。項目由編寫,實現上調用了服務提供的來對容器進行管理。此命令將會停止命令所啟動的容器,并移除網絡啟動已經存在的服務容器。停止已經處于運行狀態的容器,但不刪除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
摘要:后來真正用的時候才發覺,這個簡直是個神器。容器可以被創建啟動停止刪除暫停等。項目由編寫,實現上調用了服務提供的來對容器進行管理。此命令將會停止命令所啟動的容器,并移除網絡啟動已經存在的服務容器。停止已經處于運行狀態的容器,但不刪除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
閱讀 1319·2021-11-16 11:45
閱讀 2240·2021-11-02 14:40
閱讀 3881·2021-09-24 10:25
閱讀 3031·2019-08-30 12:45
閱讀 1260·2019-08-29 18:39
閱讀 2475·2019-08-29 12:32
閱讀 1605·2019-08-26 10:45
閱讀 1922·2019-08-23 17:01