簡體   English   中英

通過 docker 容器創建 django 項目時,它說 sh: django-admin: not found

[英]when creating django project via docker container it says sh: django-admin: not found

I created a docker python image on top of alpine the problem is that when I want to start a django app it can not find django and it is right bcz when I type pip list, it does not have django and other packages.

ps:創建鏡像時顯示正在收集django等包

這是 requirements.txt 文件

Django>=3.2.4,<3.3
djangorestframework>=3.12.4,<3.13

這是我的 Dockerfile:

FROM python:3.9-alpine3.13
LABEL maintainer="siavash"

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /tmp/requirements.txt
COPY ./requirements.dev.txt /tmp/requirements.dev.txt
COPY ./app /app
WORKDIR /app
EXPOSE 8000

ARG DEV=false
RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    /py/bin/pip install -r /tmp/requirements.txt && \
    if [ $DEV = "true" ]; \
        then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
    fi && \
    rm -rf /tmp && \
    adduser \
        --disabled-password \
        --no-create-home \
        django-user


ENV PATH = "/py/bin:$PATH"

USER django-user

這是 docker-compose.yml


version: "3.9"

services:
  app:
    build:
      context: .
      args:
        - DEV=true
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py runserver 0.0.0.0:8000"


這是我使用的命令:

docker-compose run --rm app sh -c "django-admin startproject app . "

順便說一句,圖像創建成功

嘗試pip3 install而不是pip install

如果這不起作用,請嘗試在一個步驟中單獨安裝並檢查。

  1. 在正常情況下,您不應在 Docker 容器內使用 virtualenv。 https://stackoverflow.com/a/48562835/19886776
  2. 在容器內部,不需要創建額外的“django-user”用戶,因為容器是一個隔離的環境。

下面是通過 Docker 容器創建新 Django 項目的代碼

要求.txt

Django>=3.2.4,<3.3

Dockerfile

FROM python:3.9-alpine3.13

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /tmp/requirements.txt

RUN pip install -r /tmp/requirements.txt && \
    rm /tmp/requirements.txt

WORKDIR /app

docker-compose.yml

version: "3.9"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
      sh -c "python manage.py runserver 0.0.0.0:8000"

創建新項目的命令

docker-compose build
docker-compose run --rm app sh -c "django-admin startproject app ."
docker-compose up -d

要編輯由 docker 容器創建的文件,我們需要修復新文件的所有權。

sudo chown -R $USER:$USER app

所以我認為發生這種情況的原因是因為一個非常簡單的錯誤很難看到ENV PATH = "/py/bin:$PATH"應該是ENV PATH="/py/bin:$PATH"

你可能會遇到一些 django-user 問題USER django-user所以你可以使用我粘貼的這個。

其他一切看起來都是正確的。

暫無
暫無

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

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