繁体   English   中英

Django Server不会在Docker-Compose中启动

[英]Django Server wont launch in Docker-Compose

我试图将Django项目移植到Docker-Compose进行部署。

我在线上阅读了各种教程,据我了解,我的App唯一需要的服务是Django和Postgres。 这是我的docker-compose.yml文件:

db:
  image: postgres:latest
  ports:
    - "5432"
  environment:
    POSTGRES_PASSWORD: postgres
    POSTGRES_USER: postgres
web:
  build: .
  ports:
   - "8000:8000"
  volumes:
   - .:/code
  links:
   - db
  command: python3 manage.py runserver 0.0.0.0:8000

我已经在我的virtualenv中本地测试了python命令,然后服务器启动,但是,当我在应用程序副本所在的文件夹中运行“ docker-compose up”时,得到以下输出:

Creating hpr_db_1
Creating hpr_web_1
Attaching to hpr_db_1, hpr_web_1
db_1  | The files belonging to this database system will be owned by user "postgres".
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 ... ok
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  | creating template1 database in /var/lib/postgresql/data/base/1 ... ok
db_1  | initializing pg_authid ... ok
db_1  | initializing dependencies ... ok
web_1 | /usr/local/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.utils.importlib will be removed in Django 1.9.
web_1 |   return f(*args, **kwds)
web_1 | 
db_1  | creating system views ... ok
db_1  | loading system objects' descriptions ... ok
db_1  | creating collations ... ok
db_1  | creating conversions ... ok
db_1  | creating dictionaries ... ok
db_1  | setting privileges on built-in objects ... ok
db_1  | creating information schema ... ok
db_1  | loading PL/pgSQL server-side language ... ok
web_1 | /usr/local/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.utils.importlib will be removed in Django 1.9.
web_1 |   return f(*args, **kwds)
web_1 | 
db_1  | vacuuming database template1 ... ok
db_1  | copying template1 to template0 ... ok
db_1  | copying template1 to postgres ... ok
db_1  | syncing data to disk ... ok
db_1  | 
db_1  | Success. You can now start the database server using:
db_1  | 
db_1  |     postgres -D /var/lib/postgresql/data
db_1  | or
db_1  |     pg_ctl -D /var/lib/postgresql/data -l logfile start
db_1  | 
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  | waiting for server to start....LOG:  database system was shut down at 2015-11-06 15:18:39 UTC
db_1  | LOG:  MultiXact member wraparound protections are now enabled
db_1  | LOG:  autovacuum launcher started
db_1  | LOG:  database system is ready to accept connections
db_1  |  done
db_1  | server started
db_1  | ALTER ROLE
db_1  | 
db_1  | 
db_1  | /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  | waiting for server to shut down....LOG:  shutting down
db_1  | 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 2015-11-06 15:18:41 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

没有关于服务器启动或类似信息的消息,由于有关弃用的警告消息,我知道它正在编译我的代码,但是我在这里很困惑。 谁能看到我的错误?

更新:

仔细检查并更改DJango服务器的端口后,我发现访问网页返回“页面加载时重置与服务器的连接”错误。 这表明该页面上正在设置某些内容。 但是我仍然无法访问它。 我知道Docker-Compose可以像教程中的简单Django应用程序一样正常工作。

您是否将django容器的端口EXPOSE了?

使用.yml文件,您可以创建内部版本。

您应将文件移至部署环境并继续运行服务器。

因此,当.yml成功运行时,您将拥有成功的构建,并且能够将文件移至部署环境(您在其中运行了最后的构建)。

无论如何,我不建议在运行程序中执行python3 manage.py runserver 0.0.0.0:8000 ,因为您的运行程序将运行并且不会完成(获取成功或失败的构建)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM