最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在python項(xiàng)目的docker鏡像里如何使用pdm管理依賴

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

前言

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

所以部署的時(shí)候 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/
# 安裝依賴項(xiàng)和項(xiàng)目到本地包目錄
WORKDIR /project
RUN pdm install --check --prod --no-editable && \
    pip install uwsgi
ENV PATH="/project/.venv/bin:$PATH"

這里有幾點(diǎn)需要注意的:

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

docker-compose 配置

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

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

小結(jié)

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

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

參考資料

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

相關(guān)文章

最新評(píng)論

南木林县| 万宁市| 大方县| 武夷山市| 惠安县| 搜索| 常德市| 石棉县| 濉溪县| 香河县| 灵璧县| 册亨县| 左贡县| 新巴尔虎左旗| 仪征市| 宝清县| 泸溪县| 宣化县| 甘谷县| 梅州市| 南川市| 繁峙县| 天台县| 东乌珠穆沁旗| 麟游县| 柞水县| 达孜县| 临海市| 盖州市| 成安县| 郯城县| 邵阳市| 喀什市| 兴文县| 渝北区| 滨州市| 泾源县| 菏泽市| 德江县| 惠东县| 揭东县|