docker - Docker-compose - 模块导入问题
问题描述
我正在开发一个 Flask 应用程序,但我docker-compose.yml
找不到我的配置文件夹。我__init__.py
在每个级别都有文件,我试图从我的docker-compose.yml
文件中添加/删除配置路径,但仍然是同样的问题。这是我的项目结构:
.
├── ...
├── web_messaging
│ ├── app.py
│ ├── __init__.py
│ ├── ...
│ └── config
│ ├── settings.py
│ ├── gunicorn.py
│ └── __init__.py
│
├── __init__py
├── .env
├── requirements.txt
├── docker-compose.yml
└── Dockerfile
当我运行时docker-compose up --build
,我收到此错误:
website_1 | - 'config' not found.
website_1 |
website_1 | Original exception:
website_1 |
website_1 | ModuleNotFoundError: No module named 'config'
website_1 | [2021-04-04 15:23:26 +0000] [8] [INFO] Worker exiting (pid: 8)
website_1 | [2021-04-04 15:23:26 +0000] [1] [INFO] Shutting down: Master
website_1 | [2021-04-04 15:23:26 +0000] [1] [INFO] Reason: Worker failed to boot.
码头工人-compose.yml
version: '2'
services:
website:
build: .
command: >
gunicorn -c "python:web_messaging.config.gunicorn" --reload "web_messaging.app:create_app()"
env_file:
- '.env'
volumes:
- '.:/web_messaging'
ports:
- '8000:8000'
应用程序.py
def create_app(settings_override=None):
"""
Create a Flask application using the app factory pattern.
:param settings_override: Override settings
:return: Flask app
"""
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config.settings')
app.config.from_pyfile('settings.py', silent=True)
if settings_override:
app.config.update(settings_override)
error_templates(app)
app.register_blueprint(user)
app.register_blueprint(texting)
extensions(app)
configure_context_processors(app)
return app
...
Dockerfile
FROM python:3.7.5-slim-buster
RUN apt-get update && apt-get install -qq -y \
build-essential libpq-dev --no-install-recommends
ENV INSTALL_PATH /web_messaging
RUN mkdir -p $INSTALL_PATH
WORKDIR $INSTALL_PATH
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD gunicorn -c "python:web_messaging.config.gunicorn" "web_messaging.app:create_app()"
解决方案
看来我解决了。config
文件夹必须在文件main_messaging
夹之外,
推荐阅读
- javascript - 如何直观地概念化这个 Javascript 递归函数?
- python - 更改已经训练和保存的神经网络 Keras
- typescript - 你可以在数组中声明一个变量吗?
- java - 如何让我的 sql 更新方法起作用?
- r - 对数据子集的多次邓恩测试
- javascript - React onwheel 不执行现有的 scrollintoview 但 onclick 能够
- installation - Tensorflow 2找不到gpu
- unix - Unix将grep命令重定向到文件
- c# - 本地源不存在 从 packages.config 迁移到 PackageReference
- python - 如何解决 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 3: invalid start byte?