【问题标题】:Django container cannot find its mysql containerDjango 容器找不到它的 mysql 容器
【发布时间】:2020-04-20 11:26:04
【问题描述】:

当我检查我的 mysql 容器时,我已经使用主机名 server_default 和 --network=server_default 构建了我的 django docker,并使用相同的网络运行了 mysql(mysql 容器在 django 服务器之前运行),但是当我运行我的 django 服务器时它失败并出现错误:

"Can't connect to MySQL server on 'server_default' ([Errno -2] Name or service not known)"

我已连接到我的服务器容器,但无法连接到 mysql 容器。 server_default 是网桥类型。 我的运行命令:

sudo docker run -d -p 8000:8000 --network=server_default scotech-server

sudo docker run -d --network=server_default scotech-db

【问题讨论】:

  • 您能否编辑问题以添加您运行的实际docker networkdocker run 命令?
  • 我已添加,感谢您的快速响应
  • 数据库特别需要一个--name 参数,Django 应用程序可以使用该容器名称作为DNS 名称来访问数据库。仅网络名称是不够的。
  • 我尝试将 scotech-db 作为主机名,但没有成功 :((我的 mysql 名称)
  • Docker 文档中的 Use bridge networks 解释了这一点,尽管不是特别清楚。即使您没有使用 Docker Compose,Networking in Compose 也会对所涉及的步骤进行更清晰的描述。

标签: mysql django docker


【解决方案1】:

我不能单独使用 docker,但使用 docker-compose.yml 和 2 构建上下文我可以将它们连接在一起:这似乎是一个糟糕的解决方案 :(

version: '3'

services:
scotech-db:
 build:
  context: ./scotech-mysql-docker
 expose:
  - 3306
 web:
  build:
   context: ./server
  depends_on:
   - scotech-db
  restart: on-failure
  ports:
   - "8002:8000"

【讨论】:

  • 这是一个非常常规的 2 容器设置(expose: 声明是不必要的)。
猜你喜欢
  • 2021-11-16
  • 2022-08-09
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多