如何让 docker 容器安装最新的依赖版本

How to let docker container install latest dependencies version

我有一个从 Dockerfile 构建的 docker 图像。它在自定义库中安装了 pip。现在图像在 docker-compose 服务中使用。

requirements.txt

example-library-1
example-library-2

Dockerfile

FROM python:3.7-alpine
WORKDIR /code
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

docker build -t example_user/example_image .

docker-compose.yml

version: "3.9"
services:
  web:
    image: example_user/example_image
    ports:
      - "8000:5000"

当我有 example-library-1 的新版本时,如何更新 docker-compose 服务以使用新库?

我试过 docker-compose up -ddocker-compose restart web 但它不检查新的库版本。

没有 docker-compose downdocker-compose up -d 有没有办法做到这一点?

您可以在撰写文件中添加 build 键。

services:
  web:
    image: example_user/example_image
    build:
      context: path/to/context
      dockerfile: path/to/Dockerfile

然后你 运行 与 build flag 组合。

docker compose up --build

也就是说,compose 没有滚动更新之类的功能。您需要停止组合服务并处理构建标志以便重建。

如果需要滚动更新,则需要使用不同的运算符,例如 swarm 或 Kubernetes。

docker-compose 构建标志是个好主意。

之后我建议使用 --no-cache 标志,因为 docker buildkit 可能会缓存一些层。

检查 here 文档。

别忘了检查 DOCKER_BUILDKIT 环境变量。