国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器

這篇具有很好參考價(jià)值的文章主要介紹了windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、生成requirements.txt

這里使用pipreqs進(jìn)行依賴庫的識(shí)別。使用 pipreqs 可以自動(dòng)檢索到當(dāng)前項(xiàng)目下的所有組件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免將整個(gè)python環(huán)境的依賴包寫入。
在項(xiàng)目的當(dāng)前目錄中執(zhí)行
pipreqs ./ --encoding=utf8 --force
這里使用的是一個(gè)基于flask項(xiàng)目,目錄結(jié)構(gòu)如下
windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器

2、編寫dockerfile

dockerfile定義python版本號(hào),將本地項(xiàng)目進(jìn)行拷貝,定義啟動(dòng)命令。
這部分固定流程我們其實(shí)可以抽象出來通過自定義腳本去一鍵生成。這里做一個(gè)簡單的示例。自動(dòng)生成腳本見文末。

# 基于的基礎(chǔ)鏡像
FROM python:3.8.8

# 設(shè)置app文件夾是工作目錄
WORKDIR /usr/src/app

# 先將依賴文件拷貝到項(xiàng)目中
COPY requirements.txt /usr/src/app

# 執(zhí)行指令,安裝依賴
RUN pip install -r requirements.txt

# 拷貝當(dāng)前目錄的項(xiàng)目文件和代碼
COPY . /usr/src/app

# 執(zhí)行命令
CMD [ "python", "/usr/src/app/app.py" ]

3、構(gòu)建鏡像

這里以我自己寫的一個(gè)疫情可視化的flask項(xiàng)目為例,項(xiàng)目名稱為epidemic

docker build -f dockerfile -t epidemic .

這里就是讀取項(xiàng)目目錄下的dockerfile進(jìn)行構(gòu)建
-f

4、啟動(dòng)容器

鏡像構(gòu)建完成后使用docker run啟動(dòng)容器,-p指定

docker run -it -p 5001:5000 --name epidemic_container epidemic

-p 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口
-i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;
運(yùn)行完成后我們就能看到如下界面,這里的控制臺(tái)輸出的就是此時(shí)容器中的flask運(yùn)行控制臺(tái)了。
windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器

我們本地訪問我們配置的映射端口即可,瀏覽器輸入127.0.0.1:5001即可

查看我們剛剛生成的容器。
windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器

5、編寫腳本自動(dòng)化完成上述操作

通過腳本去將第二章中的dockerfile設(shè)置為模板,每次只需要自定義鏡像名稱即可,也可直接使用默認(rèn)值。
腳本按如下邏輯依次執(zhí)行

完整代碼如下

import os
import sys
import time


def get_cmd(cmd):
    res = os.popen(cmd)
    return res.read()


class Generate:
    def __init__(self, dockerfile_name="generate.dockerfile", image_name="docker_img"):
        self.dockerfile_name = dockerfile_name
        self.image_name = image_name

    def generate_dockerfile(self, work_dir="/usr/src/app", main_file="app.py"):
        # 首先生成dockerfile模板,python版本通過命令行獲取
        python_version = sys.version.split(" ")[0]
        template = f"""
FROM python:{python_version}
WORKDIR {work_dir}
COPY requirements.txt {work_dir}
RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
COPY . {work_dir}
CMD [ "python", "{work_dir}/{main_file}" ]
"""
        # 檢查requirements.txt文件是否存在,不存在則調(diào)用命令生成生成
        if not os.path.exists("requirements.txt"):
            print("正在等待requirements.txt文件生成,請(qǐng)稍候....")
            os.system("pip install -i https://pypi.doubanio.com/simple/ pipreqs && pipreqs ./ --encoding=utf8 --force")
            while not os.path.exists("requirements.txt"):
                print("正在等待requirements.txt文件生成...")
                time.sleep(2)

        # 確定requirements文件生成后,將dockerfile寫入到本地
        with open(self.dockerfile_name, "w") as f:
            f.write(template)
        print(f"dockerfile生成成功,文件名稱為{self.dockerfile_name}")
        return True

    def build_image(self):
        images = get_cmd(f"docker images")
        if self.image_name not in images:
            cmd = f"docker build -f {self.dockerfile_name} -t {self.image_name} ."
            print(cmd)
            os.system(cmd)
            return self.image_name in images
        return False

    def run_container(self, container_name, local_port=5001, container_port=5000):
        cmd = f"docker run -p {local_port}:{container_port} --name {container_name} {self.image_name}"
        #cmd = f"docker run {self.image_name}"
        print(cmd)
        os.system(cmd)


if __name__ == '__main__':
    generate = Generate(dockerfile_name="generate_dockerfile.dockerfile", image_name="epidemic")
    generate.generate_dockerfile()
    generate.build_image()
    generate.run_container(container_name="epidemic_container", local_port=5001, container_port=5000)

運(yùn)行完成后的輸出如下
windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器

6、end

如果需要部署示例的這份源碼可以關(guān)注公眾號(hào)"一顆程序樹"在公眾號(hào)菜單進(jìn)行獲取
windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器文章來源地址http://www.zghlxwxcb.cn/news/detail-400640.html

到了這里,關(guān)于windows部署python項(xiàng)目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動(dòng)容器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python項(xiàng)目結(jié)構(gòu)示例(python代碼結(jié)構(gòu)、python目錄結(jié)構(gòu))與python部署結(jié)構(gòu)、python部署目錄、flask項(xiàng)目結(jié)構(gòu)、flask目錄

    myproject/ :項(xiàng)目的根目錄,也是Python包的根目錄。 myproject/__init__.py :一個(gè)空的 __init__.py 文件,用于將 myproject 目錄標(biāo)記為一個(gè)Python包。 myproject/module1.py 、 myproject/module2.py 等:項(xiàng)目的模塊文件,包含項(xiàng)目的核心代碼。 tests/ :測試目錄,包含用于測試項(xiàng)目代碼的測試文件。

    2024年02月12日
    瀏覽(100)
  • Docker 部署后端項(xiàng)目自動(dòng)化腳本

    Docker 部署后端項(xiàng)目自動(dòng)化腳本

    這里的項(xiàng)目位置是target同級(jí)目錄 1.在項(xiàng)目下面新建一個(gè)bin目錄 新建一個(gè)package.txt 寫入下方代碼后 后綴改為.bat 2.項(xiàng)目下新建一個(gè)deploy文件夾里面新建一個(gè)deploy.ps1腳本文件 示例 這里使用ssh 可以自己編寫不太一樣 上傳到服務(wù)器中后自己選擇一個(gè)合適的文件夾 然后旁邊新建一個(gè)

    2024年02月01日
    瀏覽(43)
  • python Flask web項(xiàng)目uwsgi + nginx部署

    python Flask web項(xiàng)目uwsgi + nginx部署

    略 2.1安裝vertualenv 2.2創(chuàng)建虛擬環(huán)境 創(chuàng)建保存環(huán)境的目錄: 創(chuàng)建虛擬環(huán)境: 查看虛擬環(huán)境: 2.3激活虛擬環(huán)境 activiate是激活虛擬環(huán)境的命令腳本,在虛擬環(huán)境的bin目錄下 執(zhí)行activate激活環(huán)境 3.1安裝uwsgi 激活虛擬環(huán)境,安裝uwsgi 3.2基于uwsgi運(yùn)行flask項(xiàng)目 3.2.1命令的方式 3.2.2配置文

    2024年02月10日
    瀏覽(23)
  • 使用IIS服務(wù)器部署Flask python Web項(xiàng)目

    使用IIS服務(wù)器部署Flask python Web項(xiàng)目

    參考文章 參考文章 將Flask應(yīng)用程序部署到IIS服務(wù)器上需要一些步驟,因?yàn)镮IS是為.NET應(yīng)用程序設(shè)計(jì)的。要將Flask Python Web項(xiàng)目部署到IIS服務(wù)器,您需要使用一個(gè)稱為\\\"FastCGI\\\"的橋接工具來連接IIS和Python應(yīng)用程序。以下是將Flask應(yīng)用程序部署到IIS服務(wù)器的一般步驟: 安裝IIS和FastCG

    2024年04月16日
    瀏覽(42)
  • IDEA通過Docker插件部署SpringBoot項(xiàng)目

    IDEA通過Docker插件部署SpringBoot項(xiàng)目

    找到并編輯服務(wù)器上的docker.service文件。 在下面ExecStart替換成下面的 有以下信息輸出說明配置成功 連接成功就可以在idea里面使用docker了 1、pom.xml中添加Docker插件坐標(biāo) 這是為了在本項(xiàng)目中引入docker來管理,畢竟最后要使用docker把項(xiàng)目打包成一個(gè)鏡像。 注意三個(gè)事情: 1.版本

    2024年02月07日
    瀏覽(25)
  • 怎么通過docker/portainer部署vue項(xiàng)目

    怎么通過docker/portainer部署vue項(xiàng)目

    這篇文章分享一下如何通過docker將vue項(xiàng)目打包成鏡像文件,并使用打包的鏡像在docker/portainer上部署運(yùn)行,寫這篇文章參考了vue-cli和docker的官方文檔。 首先,閱讀vue-cli關(guān)于docker部署的說明,上面提供了關(guān)鍵的幾個(gè)步驟。 從上面的頁面內(nèi)容中,得出了以下結(jié)論:前端項(xiàng)目需要

    2024年02月07日
    瀏覽(22)
  • Python 基于docker部署的Mysql備份查詢腳本

    Python 基于docker部署的Mysql備份查詢腳本

    前言 此環(huán)境是基于docker部署的mysql,docker部署mysql可以參考如下鏈接: docker 部署服務(wù)案例-CSDN博客 顏色塊文件 備份代碼 此代碼如果是本地環(huán)境測試的話,邏輯是判斷當(dāng)前本地有沒有存儲(chǔ)備份數(shù)據(jù)的目錄,沒有則創(chuàng)建。 再利用subprocess執(zhí)行mysqldump命令,按照日期生成.sql文件

    2024年04月26日
    瀏覽(18)
  • Windows服務(wù)器,通過Nginx部署VUE+Django前后端分離項(xiàng)目

    Windows服務(wù)器,通過Nginx部署VUE+Django前后端分離項(xiàng)目

    基本說明 安裝 Nginx 部署 VUE 前端 部署 Django 后端 Django admin 靜態(tài)文件(CSS,JS等)丟失的問題 總結(jié) 本文介紹了在 windows 服務(wù)器下,通過 Nginx 部署 VUE + Django 前后端分離項(xiàng)目。本項(xiàng)目前端運(yùn)行在 80 端口,服務(wù)器端運(yùn)行在 8000 端口。因此本項(xiàng)目使用 Django 的 runserver 命令進(jìn)行部署

    2024年02月05日
    瀏覽(31)
  • windows版docker部署springcloud項(xiàng)目

    windows版docker部署springcloud項(xiàng)目

    1.windows版docker環(huán)境(其他版教程可能道理一樣但是比如文件后墜名上可能有差異) 2.運(yùn)行好的數(shù)據(jù)庫容器(實(shí)現(xiàn)教程) 3.所有jar包 最后整好的文件夾結(jié)構(gòu)圖(原工程文件機(jī)密,可以找我尋求幫助,但是需要一點(diǎn)點(diǎn)小心意): 4個(gè)文件夾分別是裝有4個(gè)微服務(wù)jar包 Dockerfile文件是

    2024年02月15日
    瀏覽(19)
  • 手把手教你通過 Docker 部署前后端分離項(xiàng)目(親測可用)

    手把手教你通過 Docker 部署前后端分離項(xiàng)目(親測可用)

    安裝Docker 安裝Nginx 安裝Mysql 部署SpringBoot項(xiàng)目 部署Vue項(xiàng)目 一、安裝Docker 1、安裝: 2、啟動(dòng)/停止/重啟docker服務(wù) 3、查看docker版本信息 4、運(yùn)行helloword,因?yàn)椴淮嬖诖绥R像,docker會(huì)自動(dòng)下載運(yùn)行本鏡像 5、查看所有docker鏡像 二、安裝Nginx 1、拉取Nginx鏡像文件 2、查看下載好的鏡像

    2023年04月24日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包