Docker组成没有启动

时间:2018-02-06 17:50:10

标签: python docker docker-compose

我正在使用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

谁能告诉我我做错了什么?

1 个答案:

答案 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