2017-04-09 71 views
1

當我訪問地址http://192.168.99.100:8000/時,我無法在瀏覽器中看到django的歡迎頁面。Django歡迎頁面上的docker-compose錯誤

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-machine ls 
NAME  ACTIVE DRIVER  STATE  URL       SWARM DO 
CKER  ERRORS 
default *  virtualbox Running tcp://192.168.99.100:2376   v1 
7.04.0-ce 

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-machine ip 
192.168.99.100 

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-compose run web 
time="2017-04-09T18:03:29-04:00" level=info msg="Unable to use system certificat 
e pool: crypto/x509: system root pool is not available on Windows" 
Performing system checks... 

System check identified no issues (0 silenced). 

You have 13 unapplied migration(s). Your project may not work properly until you 
apply the migrations for app(s): admin, auth, contenttypes, sessions. 
Run 'python manage.py migrate' to apply them. 

April 09, 2017 - 22:03:31 
Django version 1.11, using settings 'composeexample.settings' 
Starting development server at http://0.0.0.0:8000/ 
Quit the server with CONTROL-C. 

有另一種方式(或本地主機鏈接),我可以訪問我的Django的歡迎頁面?

enter image description here

Dockerfile

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

enter image description here

搬運工-compose.yml

version: '2' 
services: 
    db: 
    image: postgres 
    web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
     - .:/code 
    ports: 
     - "8000:8000" 
    depends_on: 
     - db 

搬運工構成了

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-compose up 
dockerdjangotutorial_db_1 is up-to-date 
Creating dockerdjangotutorial_web_1 
Attaching to dockerdjangotutorial_db_1, dockerdjangotutorial_web_1 
db_1 | The files belonging to this database system will be owned by user "post 
gres". 
db_1 | This user must also own the server process. 
db_1 | 
db_1 | The database cluster will be initialized with locale "en_US.utf8". 
db_1 | The default database encoding has accordingly been set to "UTF8". 
db_1 | The default text search configuration will be set to "english". 
db_1 | 
db_1 | Data page checksums are disabled. 
db_1 | 
db_1 | fixing permissions on existing directory /var/lib/postgresql/data ... o 
k 
db_1 | creating subdirectories ... ok 
db_1 | selecting default max_connections ... 100 
db_1 | selecting default shared_buffers ... 128MB 
db_1 | selecting dynamic shared memory implementation ... posix 
db_1 | creating configuration files ... ok 
db_1 | running bootstrap script ... ok 
db_1 | performing post-bootstrap initialization ... ok 
db_1 | 
db_1 | WARNING: enabling "trust" authentication for local connections 
db_1 | You can change this by editing pg_hba.conf or using the option -A, or 
db_1 | --auth-local and --auth-host, the next time you run initdb. 
db_1 | syncing data to disk ... ok 
db_1 | 
db_1 | Success. You can now start the database server using: 
db_1 | 
db_1 |  pg_ctl -D /var/lib/postgresql/data -l logfile start 
db_1 | 
db_1 | **************************************************** 
db_1 | WARNING: No password has been set for the database. 
db_1 |   This will allow anyone with access to the 
db_1 |   Postgres port to access your database. In 
db_1 |   Docker's default configuration, this is 
db_1 |   effectively any other container on the same 
db_1 |   system. 
db_1 | 
db_1 |   Use "-e POSTGRES_PASSWORD=password" to set 
db_1 |   it in "docker run". 
db_1 | **************************************************** 
db_1 | waiting for server to start....LOG: could not bind IPv6 socket: Cannot 
assign requested address 
db_1 | HINT: Is another postmaster already running on port 5432? If not, wait 
a few seconds and retry. 
db_1 | LOG: database system was shut down at 2017-04-09 21:55:03 UTC 
db_1 | LOG: MultiXact member wraparound protections are now enabled 
db_1 | LOG: database system is ready to accept connections 
db_1 | LOG: autovacuum launcher started 
db_1 | done 
db_1 | server started 
db_1 | ALTER ROLE 
db_1 | 
db_1 | 
db_1 | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb 
.d/* 
db_1 | 
db_1 | LOG: received fast shutdown request 
db_1 | LOG: aborting any active transactions 
db_1 | LOG: autovacuum launcher shutting down 
db_1 | LOG: shutting down 
db_1 | waiting for server to shut down....LOG: database system is shut down 
db_1 | done 
db_1 | server stopped 
db_1 | 
db_1 | PostgreSQL init process complete; ready for start up. 
db_1 | 
db_1 | LOG: database system was shut down at 2017-04-09 21:55:04 UTC 
db_1 | LOG: MultiXact member wraparound protections are now enabled 
db_1 | LOG: database system is ready to accept connections 
db_1 | LOG: autovacuum launcher started 
web_1 | Performing system checks... 
web_1 | 
web_1 | System check identified no issues (0 silenced). 

我剛打開Kitematic軟件 enter image description here

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker --version 
time="2017-04-09T20:00:54-04:00" level=info msg="Unable to use system certificat 
e pool: crypto/x509: system root pool is not available on Windows" 
Docker version 17.03.1-ce, build c6d412e 

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-compose --version 
docker-compose version 1.11.1, build 7afaa436 

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-machine --version 
docker-machine.exe version 0.10.0, build 76ed2a6 

運行的碼頭工人,組成了再次

[email protected] MINGW64 ~/Documents/GitHub/docker-django-tutorial (master) 
$ docker-compose up 
Starting dockerdjangotutorial_db_1 
Starting dockerdjangotutorial_web_1 
Attaching to dockerdjangotutorial_db_1, dockerdjangotutorial_web_1 
db_1 | LOG: database system was interrupted; last known up at 2017-04-09 22:0 
0:10 UTC 
db_1 | LOG: database system was not properly shut down; automatic recovery in 
progress 
db_1 | LOG: invalid record length at 0/150F2C0: wanted 24, got 0 
db_1 | LOG: redo is not required 
db_1 | LOG: MultiXact member wraparound protections are now enabled 
db_1 | LOG: database system is ready to accept connections 
web_1 | Performing system checks... 
web_1 | 
web_1 | System check identified no issues (0 silenced). 
web_1 | 
web_1 | You have 13 unapplied migration(s). Your project may not work properly 
until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
web_1 | Run 'python manage.py migrate' to apply them. 
web_1 | April 09, 2017 - 23:58:45 
web_1 | Django version 1.11, using settings 'composeexample.settings' 
web_1 | Starting development server at http://0.0.0.0:8000/ 
web_1 | Quit the server with CONTROL-C. 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:00:03] "GET/HTTP/1.1" 400 57374 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:00:24] "GET/HTTP/1.1" 400 57486 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:00:25] "GET /favicon.ico HTTP/1.1" 400 57409 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:01:51] "GET/HTTP/1.1" 400 57486 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:01:51] "GET /favicon.ico HTTP/1.1" 400 57670 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:02:29] "GET/HTTP/1.1" 400 57159 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:02:30] "GET /favicon.ico HTTP/1.1" 400 57280 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:02:30] "GET /favicon.ico HTTP/1.1" 400 57280 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:02:37] "GET/HTTP/1.1" 400 57374 
web_1 | Performing system checks... 
web_1 | 
web_1 | System check identified no issues (0 silenced). 
web_1 | 
web_1 | You have 13 unapplied migration(s). Your project may not work properly 
until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
web_1 | Run 'python manage.py migrate' to apply them. 
web_1 | April 10, 2017 - 00:03:08 
web_1 | Django version 1.11, using settings 'composeexample.settings' 
web_1 | Starting development server at http://0.0.0.0:8000/ 
web_1 | Quit the server with CONTROL-C. 
web_1 | Invalid HTTP_HOST header: '192.168.99.100:8000'. You may need to add u' 
192.168.99.100' to ALLOWED_HOSTS. 
web_1 | [10/Apr/2017 00:03:10] "GET/HTTP/1.1" 400 57292 
web_1 | Performing system checks... 
web_1 | 
web_1 | System check identified no issues (0 silenced). 
web_1 | 
web_1 | You have 13 unapplied migration(s). Your project may not work properly 
until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
web_1 | Run 'python manage.py migrate' to apply them. 
web_1 | April 10, 2017 - 00:03:17 
web_1 | Django version 1.11, using settings 'composeexample.settings' 
web_1 | Starting development server at http://0.0.0.0:8000/ 
web_1 | Quit the server with CONTROL-C. 
Gracefully stopping... (press Ctrl+C again to force) 
Stopping dockerdjangotutorial_web_1 ... done 
Stopping dockerdjangotutorial_db_1 ... done 
+1

請包括使用的docker-compose.yml文件和嘗試連接時看到的錯誤。 – BMitch

+0

謝謝@BMitch我添加了我的Dockerfile。我正在學習本教程https://docs.docker.com/compose/django/#define-the-project-components –

+0

我剛剛在教程中遇到了問題。請包括您使用的docker-compose.yml文件,以防與教程中的文件不匹配。 – BMitch

回答

1

目前還不清楚具體是什麼打破了,但要達到在碼頭工人發佈的端口,你需要幾件事情:

  1. 本身需要的端口被推入你的碼頭主機。要映射的端口8888的主機8000端口在容器內部上,與docker run -p 8888:8000 ...或搬運工-compose.yml一個部分是通常爲您服務下與:

ports: - 8888:8000

  • 容器應用程序本身需要監聽容器端口上的所有接口(0.0.0.0)(本例中爲8000)。

  • 您需要連接到發佈端口上的docker主機。與docker-machine IP將是虛擬機的IP。您可以使用docker-machine ip或任何環境查找碼頭主機的IP,echo $DOCKER_HOST會告訴您docker命令的發送位置。

  • 您已經完成了第1部分和第3部分。容器本身正在監聽所有的接口,但是從粘貼的各種命令中,我懷疑服務本身並沒有一路開始(可能要查找數據庫,因爲你曾經在一個點上執行了docker-compose run web而不是docker-compose up),因爲有一個輸出部分沒有服務運行線。也許您在檢查網頁之前先關閉服務並使用cont + C

    0

    Dockerfile寫入此嘗試:

    FROM python:2.7 
    ENV PYTHONUNBUFFERED 1 
    RUN mkdir /code 
    WORKDIR /code 
    ADD requirements.txt /code/ 
    RUN pip install -r requirements.txt 
    ADD . /code/ 
    RUN python manage.py migrate 
    RUN python manage.py runserver 
    

    德爾command: python manage.py runserver 0.0.0.0:8000

    嘗試更改端口。

    這是我的看法,希望能幫助你