日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

docker如何部署python项目_Docker如何部署Python项目的实现详解

發布時間:2024/7/19 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker如何部署python项目_Docker如何部署Python项目的实现详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker 是一個開源項目,為開發人員和系統管理員提供了一個開放平臺,可以將應用程序構建、打包為一個輕量級容器,并在任何地方運行。Docker 會在軟件容器中自動部署應用程序。IBV免費資源網

在本篇中,我將介紹如何 docker 化一個 Python Django 應用程序,然后使用一個 docker-compose 腳本將應用程序作為容器部署到 docker 環境。IBV免費資源網

環境IBV免費資源網

IBV免費資源網

操作系統IBV免費資源網

IBV免費資源網

dbnuo@localhost ~ sw_vers

ProductName: Mac OS X

ProductVersion: 10.15.3

BuildVersion: 19D76

dbnuo@localhost ~ uname -v

Darwin Kernel Version 19.3.0: Thu Jan 9 20:58:23 PST 2020; root:xnu-6153.81.5~1/RELEASE_X86_64

Docker 版本IBV免費資源網

IBV免費資源網

dbnuo@localhost ~ docker -v

Docker version 19.03.8, build afacb8b

Docker Compose 版本IBV免費資源網

IBV免費資源網

dbnuo@localhost ~ docker-compose -v

docker-compose version 1.25.4, build 8d51620a

目錄結構IBV免費資源網

IBV免費資源網

這里列出本次用到的相關文件和目錄,以下會介紹每個文件目錄的作用和內容。IBV免費資源網

.

├── bash.alias

├── docker-compose.yml

├── .env

├── services

│ └── python

│ │ ├── Dockerfile

│ │ └── requirements.txt

└── www

└── python

bash.alias:用以記錄本地終端的命令。

docker-compose.yml:容器配置文件。

.env:環境變量設置文件。

services/python/Dockerfile:鏡像構建文件。

services/python/requirements.txt:依賴包管理文件。

www/python:項目/代碼存放目錄。

構建部署IBV免費資源網

IBV免費資源網

設置環境變量IBV免費資源網

IBV免費資源網

打開 .env 文件,添加以下內容:IBV免費資源網

#

# python

#

PYTHON_VERSION=3.8.2

PYTHON_PORT=9100

PYTHON_VERSION:用以設置 Python Tags,可以在 Docker Hub 上查看所有 Tags。

PYTHON_PORT:本地映射容器端口的端口。

構建鏡像IBV免費資源網

IBV免費資源網

打開 services/python/Dockerfile 文件,添加以下內容:IBV免費資源網

ARG PYTHON_VERSION

FROM python:${PYTHON_VERSION} AS python-base

ENV LANG C.UTF-8

ENV LC_ALL C.UTF-8

ENV PYTHONDONTWRITEBYTECODE 1

ENV PYTHONFAULTHANDLER 1

FROM python-base AS python-deps

WORKDIR /code

RUN apt-get update \

&& apt-get -y install freetds-dev \

&& apt-get -y install unixodbc-dev

COPY requirements.txt ./

RUN pip install -r requirements.txt -i https://pypi.douban.com/simple

我描述下每個部分:IBV免費資源網

首先,指定要在其上構建鏡像的 Python 鏡像。這是由 Docker 組織提供的官方鏡像,該 Python 鏡像版本由環境變量 PYTHON_VERSION 設置。我們為該鏡像命名 python-base,它將在下個階段使用到:IBV免費資源網

IBV免費資源網

ARG PYTHON_VERSION

FROM python:${PYTHON_VERSION} AS python-base

接下來,設置環境變量以正確設置語言環境,阻止Python生成 .pyc 文件,并在 segfaults 上啟用 Python 追溯:IBV免費資源網

IBV免費資源網

ENV LANG C.UTF-8

ENV LC_ALL C.UTF-8

ENV PYTHONDONTWRITEBYTECODE 1

ENV PYTHONFAULTHANDLER 1

最后,使用 python-base 鏡像開始新的構建階段。我們將在 python-deps 映像中安裝所有 Python 依賴項:IBV免費資源網

IBV免費資源網

FROM python-base AS python-deps

WORKDIR /code

RUN apt-get update \

&& apt-get -y install freetds-dev \

&& apt-get -y install unixodbc-dev

COPY requirements.txt ./

RUN pip install -r requirements.txt -i https://pypi.douban.com/simple

依賴包管理IBV免費資源網

IBV免費資源網

打開 services/python/requirements.txt 文件,添加項目需要的依賴。示例:IBV免費資源網

Django==3.0.4

djangorestframework==3.11.0

pyDes==2.0.1

PyMySQL==0.9.3

redis==3.4.1

requests==2.23.0

pyodbc==4.0.30

paramiko==2.7.1

psutil==5.7.0

容器配置IBV免費資源網

IBV免費資源網

打開 docker-compose.yml 文件,配置容器:IBV免費資源網

version: "3"

services:

python:

build:

context: ./services/python

args:

PYTHON_VERSION: ${PYTHON_VERSION}

command: python3 /code/HelloWorld/manage.py runserver 0.0.0.0:8000

# command:

# - /bin/sh

# - -c

# - |

# django-admin startproject HelloWorld

# python3 /code/HelloWorld/manage.py runserver 0.0.0.0:8000

container_name: python

hostname: python

volumes:

- ${SOURCE_DIR}/python:/code:rw

expose:

- "8000"

ports:

- "${PYTHON_PORT}:8000"

privileged: true

restart: always

networks:

- default

networks:

default:

有關 Docker Compose 的詳細介紹,大家可以查閱官方文檔。IBV免費資源網

這里主要說明下 command ,這是配置在容器啟動后執行的命令,類似 Dockerfile 的 CMD。IBV免費資源網

配置中又兩個 command,其中一個注釋了,二者只能使用一個。第一個是單條命令的配置方式,下面的是多條命令的配置方式。視個人情況修改其中命令和路徑(初次測試,建議使用下面的 command ,會自動初始化一個 HelloWorld 項目并啟動)。IBV免費資源網

啟動容器IBV免費資源網

IBV免費資源網

在文件根目錄下運行命令:IBV免費資源網

docker-compose up -d

運行該命令會自動構建鏡像并啟動容器,執行完畢后:IBV免費資源網

查看鏡像:IBV免費資源網

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

dnmp_python latest 7218552b8814 17 hours ago 1.02GB

python 3.8.2 f88b2f81f83a 3 weeks ago 933MB

查看容器:IBV免費資源網

docker-compose ps -a

Name Command State Ports

-------------------------------------------------------------------------------------------------

python python3 /code/HelloWorld/m ... Up 0.0.0.0:9100->8000/tcp

State 狀態為 Up 說明啟動成功。IBV免費資源網

打開瀏覽器訪問試一試:IBV免費資源網

IBV免費資源網

運行成功。這里列幾個常用的命令:IBV免費資源網

啟動容器:docker-compose start pythonIBV免費資源網

停止容器:docker-compose stop pythonIBV免費資源網

重啟容器:docker-compose restart pythonIBV免費資源網

刪除容器:docker-compose && docker-compose rm pythonIBV免費資源網

查看日志:docker logs pythonIBV免費資源網

Host 使用 Python 命令IBV免費資源網

IBV免費資源網

終端命令都會記錄在文件 bash.alias 中。IBV免費資源網

這里說下如何在本地使用 python 命令:IBV免費資源網

打開 ~/.bashrc (如果是 zsh 客戶端的使用 ~/.zshrc)IBV免費資源網

添加以下代碼至文件:IBV免費資源網

python () {

tty=

tty -s && tty=--tty

docker run \

$tty \

--interactive \

--rm \

--volume $PWD:/code:rw \

--workdir /code \

dnmp_python python "$@"

}

刷新配置文件,使之生效:source ~/.bashrc(如果是 zsh 客戶端的使用 source ~/.zshrc)IBV免費資源網

這時候在本地即可使用 python 命令了,試一下:IBV免費資源網

dbnuo@localhost ~ python -V

Python 3.8.2

完整的示例,可以查看我的 GitHub 項目:BNDong/dnmpIBV免費資源網

IBV免費資源網

總結

以上是生活随笔為你收集整理的docker如何部署python项目_Docker如何部署Python项目的实现详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。