如何運(yùn)用docker配合python開發(fā)環(huán)境實(shí)例
由于開發(fā)一個Python程序時(shí)需要依賴大量的三方庫包,且python2和3本身就有互不兼容的地方,我們往往需要一個隔離的環(huán)境,來避免版本影響造成的bug。
傳統(tǒng)的做法大多數(shù)人可能會選擇virtualenv來隔離,但是它有很多明顯的缺點(diǎn):
- 無法提供完全的隔離
- 如果不想在正式環(huán)境中使用,它就會造成差異
而隨著容器技術(shù)的日漸成熟和普及,Docker無疑成為解決這個問題的最優(yōu)解
本文將主要介紹docker和flask的配合開發(fā)
步驟:
1.安裝Docker(這里不詳細(xì)介紹)
# 參考命令 sudo wget -qO- https://get.docker.com/ | sh
2.應(yīng)用目錄結(jié)構(gòu)
├──fanxiangce
_docker
├── Dockerfile
├── Readme.md
└─fanxiangce
└──app
├── manage.py
└── requirements
├── common.txt
3.編寫Dockerfile(詳細(xì)命令解釋可以參考https://docs.docker.com/engine/reference/builder/#environment-replacement)
########################################################## # Dockerfile to run a flask-based web application# Based on an centos:7 image ########################################################## # Set the base image to use to centos FROM centos:7 # Set the file maintainer MAINTAINER jasonwang,wjs7740@163.com # Set env varibles used in this Dockerfile (add a unique prefix, such as DOCKYARD) # Local directory with project source ENV DOCKYARD_SRC=fanxiangce # Directory in Container for all project files ENV DOCKYARD_SRCHOME=/opt # Directory in container for project source files ENV DOCKYARD_SRCPROJ=/opt/fanxiangce # Update the defualt application repository source list RUN yum -y install epel-release RUN yum -y install python-pip RUN yum clean all # Copy application source code to SRCDIR COPY $DOCKYARD_SRC $DOCKYARD_SRCPROJ # Create application subdirectories WORKDIR $DOCKYARD_SRCPROJ RUN mkdir log VOLUME ['$DOCKYARD_SRCPROJ/log/'] # Install Python dependencies RUN pip install --upgrade pip RUN pip install -r $DOCKYARD_SRCPROJ/requirements/common.txt # Port to expose EXPOSE 8000 # Copy entrypoint script into the image WORKDIR $DOCKYARD_SRCPROJ
4. build鏡像
# 在Dockerfile同級目錄下 sudo docker build -t jason/webdemo .
成功后顯示Successfully,同時(shí)返回鏡像ID,如圖:

5.查看并啟動鏡像
注意,此處-p映射的端口(主機(jī)端口:容器端口),容器端口應(yīng)與flask應(yīng)用定義的端口一致
sudo docker images sudo docker run -it --name webdemo -p 8000:8000 jason/webdemo /bin/bash
6.在容器中啟動flask應(yīng)用
python manage.py runserver -p 8000
啟動成功如下截圖:

7.在瀏覽器輸入127.0.0.1:8000即可訪問應(yīng)用

8.后續(xù)
如果容器關(guān)閉后需要再次進(jìn)入,可以用如下命令
# 查看當(dāng)前容器 sudo docker ps -a # 啟動容器 docker start webdemo # 進(jìn)入容器 docker attach webdemo
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker安裝分布式vLLM的實(shí)現(xiàn)步驟
本文主要介紹了Docker使用vLLM庫進(jìn)行分布式推理和服務(wù)部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03
基于docker 搭建Prometheus+Grafana的過程詳解
這篇文章主要介紹了基于docker 搭建Prometheus+Grafana的過程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Docker部署前后端分離項(xiàng)目的三種方式小結(jié)
本文主要介紹了Docker部署前后端分離項(xiàng)目的三種方式小結(jié),包含通過兩個容器部署,通過compose編排容器自動部署和將前后端項(xiàng)目打成一個鏡像部署的三種方式,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
簡述Docker 安裝influxDB分布式時(shí)間序列數(shù)據(jù)庫及相關(guān)操作
influxDB是一個分布式時(shí)間序列數(shù)據(jù)庫。這篇文章主要介紹了Docker 安裝influxDB分布式時(shí)間序列數(shù)據(jù)庫及相關(guān)操作,需要的朋友可以參考下2019-10-10
Docker中實(shí)現(xiàn)CI(持續(xù)集成)和CD(持續(xù)交付/部署)的實(shí)戰(zhàn)詳解
持續(xù)集成(CI/CD)是一種軟件開發(fā)的經(jīng)驗(yàn)總結(jié),它用于幫助開發(fā)團(tuán)隊(duì)和交付團(tuán)隊(duì)實(shí)現(xiàn)頻繁且快速的集成,以及測試他們的工作成果,以盡可能快地發(fā)現(xiàn)項(xiàng)目開發(fā)和交付工程中的錯誤,本文就給大家詳細(xì)的介紹一下Docker中如何實(shí)現(xiàn)CI和CD,需要的朋友可以參考下2023-08-08
docker安裝部署jumpserver?2.25.5的方法
這篇文章主要介紹了docker安裝部署jumpserver?2.25.5的方法,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
docker容器分配固定ip的實(shí)現(xiàn)示例
如果不固定ip,每次主機(jī)重啟后,docker會動態(tài)給容器分配ip,導(dǎo)致redis容器的IP自動換了 ,然后還得去改配置就很煩,本文主要介紹了docker容器分配固定ip的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12

