[英]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.