Ant*_*ine 5 django python-3.x docker docker-compose
我开始开发一个带有 Django 后端的应用程序,我希望在 Docker 中完成。我几乎成功了,但我仍然遇到问题。目前我有两个容器正在运行:
第一个包含我的 django 应用程序,完整的命令是
python3 manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)
第二个是托管我的数据库。
我的 docker-compose.yml 文件是这样的:
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD : root
MYSQL_DATABASE : ml_gui
back:
build: ./back/
command: python3 manage.py runserver
ports:
- "8000:8000"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
我关于数据库的 Django 设置是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ml_gui',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'db',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
'TEST': {
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
},
},
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我在 localhost:8000 上的容器外部发出请求时(我已经在浏览器中使用curl 和 Postman 尝试过),我没有答案。但是,当我使用 curl 在容器内执行相同的请求时,它会起作用。
我怎样才能使这些请求在容器外部工作?
你永远不应该./manage.py runserver在生产中运行,它仅用于测试...此外,如果你不指定服务器侦听的IP地址,它仅适用于本地主机(请参阅此处)
所以在你的 docker-compose.yml 中命令应该是
./manage.py runserver 0:8000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |