簡體   English   中英

無法在瀏覽器上運行 Django app with Docker compose

[英]Failure to run Django app with Docker compose on the browser

我正在處理一個 Django 項目,並且我正在使用 Docker Compose 來設置和運行一個簡單的 Django/PostgreSQL 應用程序。 問題是當我嘗試運行命令“docker-compose up”時,終端給我 URL 以在瀏覽器上運行,但瀏覽器中沒有任何反應。 如果你有任何想法,你能幫助我嗎,我將非常感激。

Dockerfile:

FROM python:3.7-alpine
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

Docker-compose.yml:

version: '3'

services:
  web:
    build: .
    command: python src/products_projects/manage.py runserver 192.168.99.100:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
  redis:
    image: "redis:alpine"

Docker終端:

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
$ docker-machine ip
192.168.99.100

終端中的結果:

web_1    | Watching for file changes with StatReloader
web_1    | Performing system checks...
web_1    |
web_1    | System check identified no issues (0 silenced).
web_1    | August 31, 2020 - 11:44:23
web_1    | Django version 3.1, using settings 'products_projects.settings'
web_1    | Starting development server at http://192.168.99.100:8000/
web_1    | Quit the server with CONTROL-C.
web_1    | Error: That IP address can't be assigned to.
productsrestapidocker_web_1 exited with code 1

在此處輸入圖像描述

使用您共享的撰寫文件部署的容器正在使用 docker-bridge.network 並擁有自己的 IP 地址。

python src/products_projects/manage.py runserver是從容器角度執行的,它有自己的 IP 地址,不同於 docker-machine IP 地址。

runserver命令在本地機器上啟動一個輕量級開發 Web 服務器(在本例中是在容器內)。 默認情況下,服務器在 IP 地址 127.0.0.1 上的端口 8000 上運行。

ports:您在撰寫文件中使用的選項會創建從 docker 機器到容器的 DNAT 規則。 這意味着您可以啟動 Django web 服務器而無需指定 IP 參數和端口,或者如果這不起作用,您可以嘗試將192.168.99.100:8000替換為0.0.0.0:8000

然后,該站點應該可以在瀏覽器中訪問192.168.99.100:8000 ,請求被轉換為端口 8000 上的容器 IP 地址,Web 服務器正在偵聽和接受連接。

暫無
暫無

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

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