摘要:基于鏡像構(gòu)建自己的鏡像官方鏡像地址拉取官方的鏡像交互式方式生成一個容器進(jìn)入交互式容器,查看當(dāng)前版本設(shè)置的阿里云鏡像源確認(rèn)一下是否配置成功我們的使用的是系統(tǒng)使用的是包管理器命令如默認(rèn)的鏡像源也比較慢,我們也換成國內(nèi)的設(shè)
基于alpine鏡像構(gòu)建自己的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
進(jìn)入交互式容器,查看當(dāng)前python版本
python --version
設(shè)置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
確認(rèn)一下是否配置成功
cat $HOME/.pip/pip.conf
我們的python使用的是alpine系統(tǒng)
alpine使用的是apk包管理器
命令如:
apk add apk update apk del
alpine默認(rèn)的鏡像源也比較慢,我們也換成國內(nèi)的
設(shè)置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
設(shè)置后要執(zhí)行
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()
第一種執(zhí)行這個py文件方式
python test.py
然后在另一個終端以交互式方式進(jìn)入這個python容器
docker exec -it python37 /bin/sh
下載curl命令
apk add curl
使用curl訪問flask服務(wù)
curl localhost:5000 curl localhost:5000/abc
第二種執(zhí)行這個py文件的方式
# 設(shè)置環(huán)境變量 export FLASK_APP=/test.py # flask運行起來 flask run
第三種執(zhí)行這個py文件的方式
FLASK_APP=test.py flask run
根據(jù)上面的操作步驟,我們可以來編寫Dockerfile生成自己的flask鏡像
先退出上面的交互式容器,按:ctrl+D
創(chuàng)建一個flask目錄,并進(jìn)入
mkdir flask cd flask
創(chuàng)建一個pip.conf文件,將pip鏡像源寫進(jìn)去
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"]
執(zhí)行docker build命令進(jìn)行鏡像構(gòu)建
docker build -t myflask:1.0 .
確認(rèn)是否構(gòu)建成功
docker images
ok!鏡像構(gòu)建成功!
怎么運行??
創(chuàng)建一個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()
然后通過剛剛構(gòu)建的鏡像生成我們的容器
docker run --name myapp --rm -d -p 8080:5000 -v ~/myapp:/app -e FLASK_APP=/app/test.py myflask:1.0
確認(rèn)容器是否啟動
docker ps
恩,啟動了!
但是我們無法通過外網(wǎng)訪問服務(wù)器ip的8080端口訪問到容器里面
為什么?
flash默認(rèn)只允許本機(jī)訪問!
怎么辦?
停掉剛剛生成的容器
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
通過外網(wǎng)瀏覽器訪問
http://服務(wù)器ip:8080
ok,可以訪問到flask搭建的程序了!
原文鏈接:http://www.mi#/articles/34
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43881.html
摘要:基于鏡像構(gòu)建自己的鏡像官方鏡像地址拉取官方的鏡像交互式方式生成一個容器進(jìn)入交互式容器,查看當(dāng)前版本設(shè)置的阿里云鏡像源確認(rèn)一下是否配置成功我們的使用的是系統(tǒng)使用的是包管理器命令如默認(rèn)的鏡像源也比較慢,我們也換成國內(nèi)的設(shè) 基于alpine鏡像構(gòu)建自己的flask鏡像 python官方鏡像地址: http://hub.docker.com/_/python 拉取官方的python鏡像 doc...
摘要:現(xiàn)在有了之后,部署方式變了更加容易,不容易出現(xiàn)配置錯誤,環(huán)境不一致問題。實際應(yīng)用中,經(jīng)常遇到多個容器相配合運行一套應(yīng)用程序的情況。所以想要將應(yīng)用運行在容器中,該容器必須將該應(yīng)用所有的環(huán)境依賴安裝好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 ??以前部署應(yīng)用,需要各種環(huán)境配置,各種shell操作...
摘要:現(xiàn)在有了之后,部署方式變了更加容易,不容易出現(xiàn)配置錯誤,環(huán)境不一致問題。實際應(yīng)用中,經(jīng)常遇到多個容器相配合運行一套應(yīng)用程序的情況。所以想要將應(yīng)用運行在容器中,該容器必須將該應(yīng)用所有的環(huán)境依賴安裝好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 ??以前部署應(yīng)用,需要各種環(huán)境配置,各種shell操作...
摘要:后來真正用的時候才發(fā)覺,這個簡直是個神器。容器可以被創(chuàng)建啟動停止刪除暫停等。項目由編寫,實現(xiàn)上調(diào)用了服務(wù)提供的來對容器進(jìn)行管理。此命令將會停止命令所啟動的容器,并移除網(wǎng)絡(luò)啟動已經(jīng)存在的服務(wù)容器。停止已經(jīng)處于運行狀態(tài)的容器,但不刪除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
摘要:后來真正用的時候才發(fā)覺,這個簡直是個神器。容器可以被創(chuàng)建啟動停止刪除暫停等。項目由編寫,實現(xiàn)上調(diào)用了服務(wù)提供的來對容器進(jìn)行管理。此命令將會停止命令所啟動的容器,并移除網(wǎng)絡(luò)啟動已經(jīng)存在的服務(wù)容器。停止已經(jīng)處于運行狀態(tài)的容器,但不刪除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
閱讀 1323·2021-11-16 11:45
閱讀 2247·2021-11-02 14:40
閱讀 3888·2021-09-24 10:25
閱讀 3035·2019-08-30 12:45
閱讀 1267·2019-08-29 18:39
閱讀 2479·2019-08-29 12:32
閱讀 1617·2019-08-26 10:45
閱讀 1926·2019-08-23 17:01