Docker 中的 ModuleNotFound 错误

Ken*_*mar 7 python dockerfile

我已经将整个项目导入到 docker 中,并且我得到了

\n\n
\n

模块未找到错误

\n
\n\n

来自我创建的模块之一。

\n\n
FROM python:3.8\nWORKDIR /workspace/\nCOPY . /workspace/\nRUN pip install pipenv\nRUN pipenv install --deploy --ignore-pipfile\n#EXPOSE 8000\n#CMD ["pipenv", "run", "python", "/workspace/bin/web.py"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试四处寻找答案,但似乎无法使其发挥作用。

\n\n

命令:

\n\n
docker build -t atletico .\ndocker run -p 8000:8000 atletico\n
Run Code Online (Sandbox Code Playgroud)\n\n

Docker 构建:\n https://pastebin.com/FXMrY2En

\n\n
Traceback (most recent call last):\n  File "/workspace/bin/web.py", line 3, in <module>\n    from bin.setup import setup_app\nModuleNotFoundError: No module named \'bin\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的目录的副本:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 web.cpython-38.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 web.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docker-compose.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 frio\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.cpython-38.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app_events.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 config.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 routes\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

docker-compose.yml:

\n\n
version: \'3\'\nservices:\n  db:\n    image: postgres:12\n    ports:\n      - "5432:5432"\n    environment:\n      - POSTGRES_USER=postgres\n      - POSTGRES_PASSWORD=postgres\n      - POSTGRES_DB=test_db\n  redis:\n    image: "redis:alpine"\n  web:\n    env_file:\n      - .env.local\n    build: .\n    ports:\n      - "8000:8000"\n    volumes:\n      - .:/workspace\n    depends_on:\n      - db\n      - redis\n    command: "pipenv run python /workspace/bin/web.py"\n
Run Code Online (Sandbox Code Playgroud)\n

Ken*_*mar 18

所以我终于解决了这个问题。对于那些可能想知道我是如何修复它的人。您需要PYTHONPATH在 或 中Dockerfile定义一个环境变量docker-compose.yml

  • 对于那些需要帮助定义它的人=&gt; /sf/ask/3474180251/ (3认同)