簡體   English   中英

如何修復 python:無法打開文件 '//manage.py':[Errno 2] Django 中沒有此類文件或目錄

[英]How to fix python: can't open file '//manage.py': [Errno 2] No such file or directory in Django

如何修復忽略文件的剩余部分 python:無法打開文件“ //manage.py \[Errno 2\]使用命令 docker-compose up 時沒有此類文件或目錄

這是我所有的代碼,我還附上了一個圖像文件。

dockerfile 個文件

FROM python:3.10

ENV PYTHONUNBUFFERED 1 

COPY requirements.txt .
RUN pip install -r requirements.txt
 
EXPOSE 8000
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

docker-compose.yml

version: '3.7'
services:
  db:
    image: mariadb:10
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD = mariadb
      - MYSQL_DATABASE = mariadb
      - MYSQL_USER = mariadb
      - MYSQL_PASSWORD = mariadb
      - MARIADB_ROOT_PASSWORD=mysecretpassword
    ports:
      - 3306:3306
    volumes:
      - "mysqldata:/var/lib/mysql"  

  web:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    command: python manage.py runserver 0.0.0.0:8000
    environment:
      - DATABASE_URL=mariadb+mariadbconnector://user:mariadb@db:3306/mariadb
    ports:
      - "8000:8000"
    depends_on:
      - db

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on:
      - db
      
volumes:
  mysqldata:

setting.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mariadb',
        'USER': 'mariadb',
        'PASSWORD': 'mariadb',
        'HOST': '127.0.0.1',
        'PORT': 3306,
    }
}

文件圖像 Django

在您的 Dockerfile 中,您沒有COPY任何應用程序代碼,只是復制了requirements.txt文件。 典型的設置在安裝 package 依賴項后復制整個源代碼樹

# existing
COPY requirements.txt .
RUN pip install -r requirements.txt

# add missing
COPY ./ ./

如果你docker-compose run web ls ,你也應該能夠看到這個,用不同的命令啟動一個臨時容器; 您的源代碼不會在那里。

還有一些其他小錯誤或清理也可以改進此設置:

  • mysql容器中, environment:塊。 Compose 無法識別這一點,因此您設置例如 MYSQL_USER (以空格結尾)到mariadb (以空格開頭)。 刪除這些空格,所以MYSQL_USER=mariadb
  • 數據庫配置錯誤,啟動時會出現“連接被拒絕”錯誤。 應用程序容器會認為 127.0.0.1 是應用程序容器而不是數據庫容器或主機。 使用數據庫容器的Compose服務名; 'host': 'db'
  • 在 Dockerfile 中,您將應用程序安裝到圖像文件系統的頂級目錄中。 這可能會奏效,但不一定是最佳做法。 盡早切換到其他目錄; WORKDIR /app
  • 您無需將 Dockerfile CMD重復為 Compose command: 我會刪除command:行。
  • 您可以使用 Compose build:因為您有默認的 Dockerfile 名稱並且沒有其他選項; build: . 只有目錄名稱而不是映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM