欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker如何部署Python項目的實現詳解

 更新時間:2020年10月26日 10:45:12   作者:BNDong  
這篇文章主要介紹了Docker如何部署Python項目的實現詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

在本篇中,我將介紹如何 docker 化一個 Python Django 應用程序,然后使用一個 docker-compose 腳本將應用程序作為容器部署到 docker 環(huán)境。

環(huán)境

操作系統

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 版本

 dbnuo@localhost ~ docker -v
Docker version 19.03.8, build afacb8b

Docker Compose 版本

 dbnuo@localhost ~ docker-compose -v
docker-compose version 1.25.4, build 8d51620a

目錄結構

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

.
├── bash.alias
├── docker-compose.yml
├── .env
├── services
│  └── python
│  │  ├── Dockerfile
│  │  └── requirements.txt
└── www
  └── python
  • bash.alias:用以記錄本地終端的命令。
  • docker-compose.yml:容器配置文件。
  • .env:環(huán)境變量設置文件。
  • services/python/Dockerfile:鏡像構建文件。
  • services/python/requirements.txt:依賴包管理文件。
  • www/python:項目/代碼存放目錄。

構建部署

設置環(huán)境變量

打開 .env 文件,添加以下內容:

#
# python
#
PYTHON_VERSION=3.8.2
PYTHON_PORT=9100
  • PYTHON_VERSION:用以設置 Python Tags,可以在 Docker Hub 上查看所有 Tags。
  • PYTHON_PORT:本地映射容器端口的端口。

構建鏡像

打開 services/python/Dockerfile 文件,添加以下內容:

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

我描述下每個部分:

首先,指定要在其上構建鏡像的 Python 鏡像。這是由 Docker 組織提供的官方鏡像,該 Python 鏡像版本由環(huán)境變量 PYTHON_VERSION 設置。我們?yōu)樵撶R像命名 python-base,它將在下個階段使用到:

ARG PYTHON_VERSION
FROM python:${PYTHON_VERSION} AS python-base

接下來,設置環(huán)境變量以正確設置語言環(huán)境,阻止Python生成 .pyc 文件,并在 segfaults 上啟用 Python 追溯:

ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONFAULTHANDLER 1

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

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

依賴包管理

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

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

容器配置

打開 docker-compose.yml 文件,配置容器:

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 的詳細介紹,大家可以查閱官方文檔。

這里主要說明下 command ,這是配置在容器啟動后執(zhí)行的命令,類似 Dockerfile 的 CMD。

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

啟動容器

在文件根目錄下運行命令:

docker-compose up -d

運行該命令會自動構建鏡像并啟動容器,執(zhí)行完畢后:

查看鏡像:

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

查看容器:

docker-compose ps -a
  Name          Command        State          Ports
-------------------------------------------------------------------------------------------------
python     python3 /code/HelloWorld/m ...  Up   0.0.0.0:9100->8000/tcp

State 狀態(tài)為 Up 說明啟動成功。

打開瀏覽器訪問試一試:

運行成功。這里列幾個常用的命令:

啟動容器:docker-compose start python

停止容器:docker-compose stop python

重啟容器:docker-compose restart python

刪除容器:docker-compose && docker-compose rm python

查看日志:docker logs python

Host 使用 Python 命令

終端命令都會記錄在文件 bash.alias 中。

這里說下如何在本地使用 python 命令:

打開 ~/.bashrc (如果是 zsh 客戶端的使用 ~/.zshrc)

添加以下代碼至文件:

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)

這時候在本地即可使用 python 命令了,試一下:

 dbnuo@localhost ~ python -V
Python 3.8.2

完整的示例,可以查看我的 GitHub 項目:BNDong/dnmp

到此這篇關于Docker如何部署Python項目的實現詳解的文章就介紹到這了,更多相關Docker部署Python項目內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python的dict判斷key是否存在的方法

    python的dict判斷key是否存在的方法

    在本篇內容里小編給大家整理的是一篇關于python的dict判斷key是否存在的方法,有需要的朋友們可以參考下。
    2020-12-12
  • numpy:np.newaxis 實現將行向量轉換成列向量

    numpy:np.newaxis 實現將行向量轉換成列向量

    今天小編就為大家分享一篇numpy:np.newaxis 實現將行向量轉換成列向量,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python之指數與E記法的區(qū)別詳解

    Python之指數與E記法的區(qū)別詳解

    今天小編就為大家分享一篇Python之指數與E記法的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用matplotlib畫圖自定義marker

    使用matplotlib畫圖自定義marker

    這篇文章主要介紹了使用matplotlib畫圖自定義marker問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python實現對數坐標系繪制與自定義映射

    Python實現對數坐標系繪制與自定義映射

    這篇文章主要為大家學習介紹了如何利用Python實現對數坐標系繪制與坐標自定義映射,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-08-08
  • python GUI庫圖形界面開發(fā)之PyQt5信號與槽基本操作

    python GUI庫圖形界面開發(fā)之PyQt5信號與槽基本操作

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5信號與槽基本操作,需要的朋友可以參考下
    2020-02-02
  • Python多線程編程(二):啟動線程的兩種方法

    Python多線程編程(二):啟動線程的兩種方法

    這篇文章主要介紹了Python多線程編程(一):啟動線程的兩種方法,本文講解了將函數傳遞進Thread對象、繼承自threading.Thread類兩種方法,需要的朋友可以參考下
    2015-04-04
  • 關于Python的pymouse click 雙擊的問題

    關于Python的pymouse click 雙擊的問題

    這篇文章主要介紹了關于Python的pymouse click 雙擊的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Django+simpleui實現文件上傳預覽功能(詳細過程)

    Django+simpleui實現文件上傳預覽功能(詳細過程)

    該文章詳細介紹了如何在Django框架中實現文件上傳、預覽和下載功能,并使用SimpleUI美化Django后臺界面,通過創(chuàng)建模型、表單、視圖和配置URL,實現了文件的存儲和管理,同時,文章還提到了配置媒體文件、創(chuàng)建模板以及在生產環(huán)境中的部署注意事項,感興趣的朋友一起看看吧
    2025-02-02
  • TensorFlow數據輸入的方法示例

    TensorFlow數據輸入的方法示例

    這篇文章主要介紹了TensorFlow數據輸入的方法示例,主要介紹了4種方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06

最新評論