【问题标题】:Restart Python script inside Docker container when any file has changes当任何文件发生更改时,在 Docker 容器中重新启动 Python 脚本
【发布时间】:2020-12-26 06:51:46
【问题描述】:

我有一个简单的脚本,比如

print('hey 01')

我已将其 dockerized 如下所示:

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。

【问题讨论】:

  • 我已经读到,当我遇到问题时,它有点帮助,但它不是正确的方式,因为我想用 python 方式,而不是用 nodemon 的 js 方式!,我想要我的容器没有任何额外的东西,比如 npm 能够运行npm install nodemon,我想要它在纯 python 中!
  • 第三个答案使用来自 pip 的watchdog
  • 我在我的 Docker 文件 CMD ["watchmedo", "shell-command", "--patterns='*.py'", "--command='python -u \"boot_up.py\"'", "."] 中使用了这个命令,它给了我这个错误 Traceback (most recent call last): File "/usr/local/bin/watchmedo", line 5, in <module> from watchdog.watchmedo import main File "/usr/local/lib/python3.8/site-packages/watchdog/watchmedo.py", line 27, in <module> import yaml ModuleNotFoundError: No module named 'yaml'
  • 实际上,我认为您需要pip install watchdog[watchmedo] 才能获得额外的部门。

标签: python python-3.x docker docker-compose dockerfile


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2020-01-21
    • 2018-10-04
    相关资源
    最近更新 更多