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

在python項目的docker鏡像里如何使用pdm管理依賴

 更新時間:2024年08月12日 09:00:02   作者:程序設(shè)計實驗室  
在 DjangoStarter 項目中,我已經(jīng)使用 pdm 作為默認(rèn)的包管理器,不再直接使用 pip,所以部署的時候 dockerfile 和 docker-compose 配置需要修改一下,這篇文章主要介紹了在python項目的docker鏡像里使用pdm管理依賴,需要的朋友可以參考下

前言

在 DjangoStarter 項目中,我已經(jīng)使用 pdm 作為默認(rèn)的包管理器,不再直接使用 pip

所以部署的時候 dockerfile 和 docker-compose 配置也得修改一下。

dockerfile

首先修改一下 dockerfile

ARG PYTHON_BASE=3.11
FROM python:$PYTHON_BASE
# 設(shè)置 python 環(huán)境變量
ENV PYTHONUNBUFFERED=1
# 禁用更新檢查
ENV PDM_CHECK_UPDATE=false
# 設(shè)置國內(nèi)源
RUN pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/ && \
    # 安裝 pdm
    pip install -U pdm && \
    # 配置鏡像
    pdm config pypi.url "https://mirrors.cloud.tencent.com/pypi/simple/"
# 復(fù)制文件
COPY pyproject.toml pdm.lock README.md /project/
COPY . /project/
# 安裝依賴項和項目到本地包目錄
WORKDIR /project
RUN pdm install --check --prod --no-editable && \
    pip install uwsgi
ENV PATH="/project/.venv/bin:$PATH"

這里有幾點需要注意的:

  • 如果要使用 uwsgi 則必須使用不帶 slim 的Python鏡像,因為 uwsgi 的編譯依賴gcc,slim鏡像沒有
  • pdm默認(rèn)會創(chuàng)建虛擬環(huán)境,既然是在 docker 鏡像里,也可以不需要虛擬環(huán)境,這時候可以使用 pdm config python.use_venv false 配置禁用虛擬環(huán)境
  • 最后一行的環(huán)境變量配置很重要,必須把 pdm 創(chuàng)建的虛擬環(huán)境加入PATH,后面在 compose 里執(zhí)行才能使用正確的環(huán)境

docker-compose 配置

老規(guī)矩,先上配置,然后注意事項在后面。

services:
  redis:
    image: redis
    restart: unless-stopped
    container_name: $APP_NAME-redis
    expose:
      - 6379
    networks:
      - default
  web:
    container_name: $APP_NAME
    restart: always
    build: .
    environment:
      - ENVIRONMENT=docker
      - URL_PREFIX=
      - DEBUG=true
    command: pdm run ./src/manage.py runserver 0.0.0.0:8000
    # command: uwsgi uwsgi.ini
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - redis
    networks:
      - default
      - swag
networks:
  default:
    name: $APP_NAME
  swag:
    external: true

注意:

  • 新版的 compose 已經(jīng)不要求配置文件版本號了,所以第一行的 version 可以去掉。
  • 所有的容器都加上了 container_name 配置,其中的容器名稱放在環(huán)境變量里配置,我的方案是在根目錄里創(chuàng)建 .env 文件來存放環(huán)境變量。也可以在命令行里指定。
  • 網(wǎng)絡(luò)名稱也是按照環(huán)境變量的 APP_NAME 來,這點同上。
  • 這里的入口命令改成了 pdm run ./src/manage.py runserver 0.0.0.0:8000 ,使用 pdm run 可以自動啟用虛擬環(huán)境。
  • uwsgi 版本可以使用,不過這個 compose 里的配置不帶 NGINX 容器,后面整個項目啟動之后,swag也是個容器,那邊對項目里的靜態(tài)文件不好處理。所以還是得在 compose 里帶上個 NGINX 或者是 candy 之類的輕量級 web 服務(wù)器(其實NGINX就很輕了)

小結(jié)

就這樣了,就是幾個細(xì)節(jié)的地方

說起來 pdm 使用比 poetry 順暢很多,在 docker 里使用也沒有遇到什么奇奇怪怪的問題,好評??

參考資料

到此這篇關(guān)于在python項目的docker鏡像里使用pdm管理依賴的文章就介紹到這了,更多相關(guān)python pdm管理依賴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中協(xié)程用法代碼詳解

    Python中協(xié)程用法代碼詳解

    這篇文章主要介紹了Python中協(xié)程用法代碼詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python中私有函數(shù)調(diào)用方法解密

    python中私有函數(shù)調(diào)用方法解密

    這篇文章主要介紹了python中私有函數(shù)調(diào)用方法,較為詳細(xì)的分析了Python私有函數(shù)的原理與調(diào)用技巧,需要的朋友可以參考下
    2016-04-04
  • Django與DRF結(jié)合的全局異常處理方案詳解

    Django與DRF結(jié)合的全局異常處理方案詳解

    這篇文章主要為大家詳細(xì)介紹了Django與DRF結(jié)合的全局異常處理方案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python 實現(xiàn)異步調(diào)用函數(shù)的示例講解

    Python 實現(xiàn)異步調(diào)用函數(shù)的示例講解

    今天小編就為大家分享一篇Python 實現(xiàn)異步調(diào)用函數(shù)的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 基于python實現(xiàn)銀行管理系統(tǒng)

    基于python實現(xiàn)銀行管理系統(tǒng)

    這篇文章主要介紹了基于python實現(xiàn)銀行管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python項目制作的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • python用for循環(huán)求和的方法總結(jié)

    python用for循環(huán)求和的方法總結(jié)

    在本篇文章里小編給各位分享了關(guān)于python用for循環(huán)求和的方法以及相關(guān)實例代碼,需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • Python?Playwright進(jìn)行常見的頁面交互操作

    Python?Playwright進(jìn)行常見的頁面交互操作

    在使用?Playwright?進(jìn)行?Web?自動化時,頁面交互是核心操作之一,本文將詳細(xì)介紹如何使用?Playwright?進(jìn)行常見的頁面交互操作,希望對大家有所幫助
    2024-10-10
  • Python?文檔解析lxml庫的使用詳解

    Python?文檔解析lxml庫的使用詳解

    lxml 是 Python 常用的文檔解析庫,能夠高效地解析 HTML/XML 文檔,常用于 Python 爬蟲,這篇文章主要介紹了Python?文檔解析:lxml庫的使用,需要的朋友可以參考下
    2022-09-09
  • Python文件路徑讀取實例代碼詳解

    Python文件路徑讀取實例代碼詳解

    這篇文章主要介紹了在Python中處理文件路徑的方法,包括普通字符串、原始字符串、正斜杠的使用以及`os.path`模塊的應(yīng)用,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 基于python實現(xiàn)簡單C/S模式代碼實例

    基于python實現(xiàn)簡單C/S模式代碼實例

    這篇文章主要介紹了基于python實現(xiàn)簡單C/S模式代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09

最新評論