为啥我找不到 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?的主要内容,如果未能解决你的问题,请参考以下文章
Dockerfile07 -- Dockerfile构建python
Dockerfile07 -- Dockerfile构建python