Django欢迎页面上的docker-compose错误

时间:2017-04-09 22:13:16

标签: django windows docker docker-compose boot2docker

当我访问地址http://192.168.99.100:8000/时,我无法在浏览器中看到django的欢迎页面。

public ActionResult Multiple() 
{ 
    if(DateTime.Now.Day % 2 == 0)     
    { 
         return View("Other"); } 
    else 
    {
       return RedirectToAction("Index"); 
    } 
}

还有另一种方式(或localhost链接)我可以访问我的django的欢迎页面吗?

enter image description here

Dockerfile

gmondesi@MRT-3-011 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

gmondesi@MRT-3-011 MINGW64 ~/Documents/GitHub/docker-django-tutorial (master)
$ docker-machine ip
192.168.99.100

gmondesi@MRT-3-011 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.

enter image description here

搬运工-compose.yml

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

docker撰写

 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

我只是打开Kitematic软件 enter image description here

gmondesi@MRT-3-011 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).

运行docker-compose up

gmondesi@MRT-3-011 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

gmondesi@MRT-3-011 MINGW64 ~/Documents/GitHub/docker-django-tutorial (master)
$ docker-compose --version
docker-compose version 1.11.1, build 7afaa436

gmondesi@MRT-3-011 MINGW64 ~/Documents/GitHub/docker-django-tutorial (master)
$ docker-machine --version
docker-machine.exe version 0.10.0, build 76ed2a6

2 个答案:

答案 0 :(得分:1)

目前尚不清楚具体是什么,但要到达Docker的已发布端口,您需要做一些事情:

  1. 端口本身需要在docker主机上推送。要将主机上的端口8888映射到容器内的端口8000,通常使用docker run -p 8888:8000 ...,或者在docker-compose.yml中将您的服务下的部分映射到:
  2. ports: - 8888:8000

    1. 容器应用程序本身需要侦听容器端口上的所有接口(0.0.0.0)(本例中为8000)。

    2. 您需要连接到已发布端口上的docker主机。使用docker-machine,IP将是VM的IP。您可以使用docker-machine ip查找docker主机的IP,或者在任何环境中echo $DOCKER_HOST都会告诉您Docker命令的发送位置。

    3. 你已经完成了第1部分和第3部分。容器本身正在监听所有接口,但是从粘贴的各种命令中,我怀疑服务本身并没有一直启动(可能是因为你做了一个数据库docker-compose run web在某一时刻,而不是docker-compose up),因为有一个输出部分没有服务运行线。也许你在检查网页之前用 cont + C 关闭服务。

答案 1 :(得分:0)

Dockerfile writes this try:

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

del command: python manage.py runserver 0.0.0.0:8000

Try changing a port.

This is my opinion, hope to help you