首页 > 解决方案 > 当任何文件发生更改时,在 Docker 容器中重新启动 Python 脚本

问题描述

我有一个简单的脚本

print('hey 01')

我已经将它停靠在下面:

FROM python:3.8

WORKDIR /crawler_app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "-u", "boot_up.py"]

而且我还有一个如下的撰写文件:

version: "3.7"

services:
  db:
    image: mongo:latest
    container_name: ${DB_CONTAINER_NAME}
    volumes:
      - ./mongo-volume:/data/db
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_USER_PASS}
    ports:
      - ${EXPOSED_PORT}:27017
    networks:
      - crawl-network

  crawler:
    build: crawler
    container_name: ${CRAWLER_APP_NAME}
    restart: always
    volumes:
      - ./crawler:/crawler_app
    networks:
      - crawl-network
    depends_on:
      - db

networks:
  crawl-network:

问题

问题是,虽然我的 Docker 容器中有一个卷,并且当我在编辑器中更改代码并保存它时,容器内的源代码会更新,但是无法重新启动 Python 脚本以开始使用新的更新代码.

我已经搜索了很多关于这个问题的内容,我在 GitHub 和 Stack Overflow 上找到了一些线程,但没有一个对我没有用,我也没有从他们那里得到答案。

我的主要问题是,当我更改源代码并保存它时,如何重新启动容器内的 Python 脚本?

我找到了一种提到每次都重新启动容器的方法,但我认为应该有一种简单的方法,比如 nodemon 到 JavaScript。

标签: pythonpython-3.xdockerdocker-composedockerfile

解决方案


如果要使用 watchmedo,则需要安装库以通过命令解析 yaml 文件 python -m pip install pyyaml


推荐阅读