为啥我找不到 Dockerfile?

Posted

技术标签:

【中文标题】为啥我找不到 Dockerfile?【英文标题】:Why can't I find the Dockerfile?为什么我找不到 Dockerfile? 【发布时间】:2021-01-09 07:23:26 【问题描述】:

我正在制作一个 Python (Django) 和 mysql 项目。 创建一些文件后,运行命令时出现错误。

docker-compose up -d

ERROR: Cannot locate specified Dockerfile: Dockerfile

当我在当前目录中有 Dockerfile 时,为什么会出现错误?

MYAPP
-django
--__init__.py
--asgi.py
--settings.py
--urls.py
--wsgi.py

-docker-compose.yml
-Dockerfile
-manage.py
-requirement.txt
-wait-for-in.sh

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
    - .:/var/www/django
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: django
      MYSQL_DATABASE: django
      MYSQL_USER: django
      MYSQL_PASSWORD: django
  web:
    build: django
    command: sh -c "./wait-for-it.sh db:3306; python3 manage.py runserver 0.0.0.0:8000"
    volumes:
    - .:/var/www/django
    ports:
    - "8000:8000"
    depends_on:
      - db

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /var/www/django
WORKDIR /var/www/django
ADD requirements.txt /var/www/django/
RUN pip install -r requirements.txt
ADD . /var/www/django/

【问题讨论】:

【参考方案1】:

你可以试试这个

web:
  build:
    context: ./django/
    dockerfile: ./Dockerfile
    command: >
      sh -c "./wait-for-it.sh db:3306; python3 manage.py runserver 0.0.0.0:8000"
    depends_on:
      - db
    ports:
      - "8000:8000"

【讨论】:

【参考方案2】:

您可以尝试以下方法:

web:
  build:
    context: ./django/
    dockerfile: ./Dockerfile

【讨论】:

【参考方案3】:
web:
    build: django

是一个快捷方式

web:
    build:
        context: django

这意味着,Docker 镜像构建在 django 目录中。 Dockerfile 应该放在那里。与 manage.py、requirement.txt 和 wait-for-in.sh 相同。

【讨论】:

以上是关于为啥我找不到 Dockerfile?的主要内容,如果未能解决你的问题,请参考以下文章

Dockerfile 操作

Dockerfile07 -- Dockerfile构建python

Dockerfile07 -- Dockerfile构建python

为啥我找不到 ProgressiveMediaSource?

DockerFile详解以及测试案例

XCode - 为啥我找不到文件?