Flask应用在本地运行,但在DigitalOcean上出错。

问题描述 投票:0回答:1

下面是我的docker-compose.yml文件。它与我的docker-compose.yml文件有关。我想。就像我说的,应用程序在本地构建,但当我运行 "docker-compose up -d "在我的DigitalOcean Droplet,我得到这个错误。

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?

我是新的托管docker图像,所以这是我第一次去这样的东西。谢谢

python-3.x flask docker-compose digital-ocean dockerhub
1个回答
1
投票

当你访问一个Droplet,你一般运行为 root.

你似乎复制了 docker-compose.yml 正确地复制到Droplet上,但您没有复制该文件。.env 文件,它所依赖的文件到Droplet的 /root/.env.

如果你复制了 .env 归档 /root/.env 在Droplet上,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.