Flask App 在本地运行但在 DigitalOcean 上出错

Flask App runs locally but errors out on DigitalOcean

以下是我的docker-compose.yml文件。它与我的 docker-compose.yml 文件有关。我认为。就像我说的,该应用程序是在本地构建的,但是当我在我的 DigitalOcean Droplet 中 运行 "docker-compose up -d" 时,我收到了这个错误。

ERROR: Couldn't find env file: /root/.env 

以下是我的docker-compose.yml文件。

version: '2'

services:
  postgres:
    image: 'postgres:9.5'
    container_name: postgress
    env_file:
      - '.env'
    volumes:
      - 'postgres:/var/lib/postgresql/data'
    ports:
      - '5432:5432'
    networks: 
      - db_nw

  redis:
    image: 'redis:3.0-alpine'
    container_name: redis
    command: redis-server --requirepass pass123456word
    volumes:
      - 'redis:/var/lib/redis/data'
    ports:
      - '6379:6379'

  website:
    restart: always
    build: .
    container_name: website
    command: >
      gunicorn -c "python:config.gunicorn" --reload "app.app:create_app()"
    env_file:
      - '.env'
    volumes:
      - '.:/app'
    ports:
      - 8000:8000
    expose: 
      - 8000
    networks:
      - db_nw
      - web_nw
    depends_on: 
      - postgres
    links: 
      - celery
      - redis
      - postgres

  celery:
    build: .
    container_name: celery
    command: celery worker -B -l info -A app.blueprints.contact.tasks 
    env_file:
      - '.env'
    volumes:
      - '.:/app'

  nginx: 
      restart: always
      build: ./nginx
      image: 'nginx:1.13'
      container_name: nginx
      volumes:
        - /www/static
        - .:/app
      ports:
        - 80:80
      networks: 
        - web_nw
      links: 
        - website
      depends_on:
        - website

networks: 
  db_nw:
    driver: bridge
  web_nw:
    driver: bridge

volumes:
  postgres:
  redis:

我的docker文件

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 /app
RUN mkdir -p $INSTALL_PATH

WORKDIR $INSTALL_PATH

COPY requirements.txt requirements.txt
RUN pip install --upgrade pip -r requirements.txt

COPY . .
RUN pip install --editable .

CMD gunicorn -c "python:config.gunicorn" "app.app:create_app()"

我的 docker-compose.yml 文件中的卷有问题吗?还是我在我的 Dockerfile 中使用 ENV 做了一些奇怪的事情,将其硬编码到本地机器而不是 DigitalOcean 上的 "root" 目录?F

我是托管 docker 图片的新手,所以这是我第一次尝试这样的操作。谢谢!

当您访问 Droplet 时,您通常 运行 为 root

您似乎已将 docker-compose.yml 正确复制到 Droplet,但尚未将它所依赖的 .env 文件复制到 Droplet 的 /root/.env

如果您将 .env 文件复制到 Droplet 上的 /root/.env,它应该可以工作。