【发布时间】:2018-05-04 20:03:00
【问题描述】:
我开始使用 Django 后端开发应用程序,我希望在 Docker 中进行。我几乎设法做到了,但我仍然遇到问题。目前我有两个容器正在运行:
第一个包含我的 django 应用程序,完整的命令是
python3 manage.py runserver 0.0.0.0:8000
第二个是托管我的数据库。
我的 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
我关于数据库的 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',
},
},
}
问题是,当我在 localhost:8000 上的容器外发出请求(我在浏览器中尝试过,使用 curl 和 Postman)时,我没有答案。但是,当我使用 curl 在容器内执行相同的请求时,它可以工作。
我怎样才能使这些请求在容器外部工作?
【问题讨论】:
-
主机上有防火墙吗?喜欢 iptables
-
是的,我不知道我安装了 iptables。
-
8000端口是否暴露在iptables中? Docker 应该自动完成
标签: django python-3.x docker docker-compose