我正在使用docker-compose来构建一个docker容器。但问题是每当我运行docker-compose时,我都会收到此错误:app_1 | /usr/bin/python3: No module named app.server
。
P.S。我正在关注this。
我的docker-compose.yml是:
app:
restart: always
build: ./app
expose:
- "8000"
volumes:
- /usr/src/app/static
env_file: .env
command: bash -c "cd /usr/src && APP_SETTING=.env python3 -m app.server"
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- app
links:
- app:app
我的app / Dockerfile看起来像:
FROM ubuntu:16.04
.
#Install Packages
.
WORKDIR /
文件夹结构如下:
my-sanic-app
├── app
│ ├── Dockerfile
│ ├── __init__.py
│ ├── quality
│ │ ├── data.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ │
│ ├── requirements.txt
│ ├── server.py
│ ├── static
│ │ └── index.html
│ └── utils
│ ├── helper.py
│ └── __init__.py
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ └── sites-enabled
│ └── my_project
谁能告诉我我做错了什么?
答案 0 :(得分:1)
问题是你没有将python文件复制到图像中。您所关注的示例使用图像python:3.6-onbuild
作为应用程序的基本图像。
python:3.6-onbuild
包含以下内容:
FROM python:3.6-jessie
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD COPY requirements.txt /usr/src/app/
ONBUILD RUN pip install --no-cache-dir -r requirements.txt
ONBUILD COPY . /usr/src/app
特别是ONBUILD指令触发器在构建子图像时执行,在您的情况下就是该应用程序。因此,如果要构建新的Dockerfile,请确保添加等效的那些指令,即:
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /usr/src/app