簡體   English   中英

Docker 容器在啟動時在 requirements.txt 中安裝新包

[英]Docker containers install new packages in requirements.txt on start

我希望我的 docker 容器在啟動時安裝添加到requirements.txt包 - 如果有任何更改。

給定一個如下所示的 Dockerfile

FROM python 

WORKDIR /opt/code

COPY ./requirements.txt /opt/code/requirements.txt

...

RUN pip --no-cache-dir install --upgrade -r requirements.txt

...

假設這個requirements.txt文件是卷映射的,所以它可以從容器外部看到,我希望能夠通過更改requirements.txt然后調用docker restart my_container來管理包。 注意,我不希望升級舊包,只安裝新包。

作為獎勵,如果我只安裝了新安裝的軟件包的名稱(避免“已安裝”消息),我可以寫入日志文件,那就太好了

您可以制作一個入口點腳本,在運行您的應用程序之前執行此操作。 我可能會使用撰寫文件而不是直接在映像中部署它,以便您在生產中沒有動態更新的容器。

這是一個示例入口點腳本:

#!/bin/sh
# if a command is not provided, set a default command
if [ $# -eq 0 ]; then
  set -- python app.py
fi
# update to new requirements on each container start
pip --no-cache-dir install --upgrade -r requirements.txt
# use exec to replace pid 1 with the command (e.g. python app.py)
exec "$@"

Dockerfile 會添加這個,但我不會更改當前命令:

COPY entrypoint-dev.sh /

然后在您的開發撰寫文件中,您可以使用該入口點:

version: '3'
services:
  app:
    image: app:dev
    entrypoint:
    - /entrypoint-dev.sh
    volumes:
    - .:/opt/code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM