Docker中的Django服务器

我开始使用Django后端开发应用程序,我希望在Docker中进行.我几乎设法做到了,但我仍然有问题.目前我有两个容器在运行:

《Docker中的Django服务器》

第一个包含我的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在容器内执行相同的请求时,它可以工作.

我怎么能从容器外部使这些请求工作?

最佳答案 你永远不应该在生产中运行./manage.py runserver,它只用于测试……如果你没有指定服务器监听的IP地址,那么它只适用于localhost(见
here)

所以在你的docker-compose.yml命令应该是

./manage.py runserver 0:8000
点赞