【发布时间】:2017-02-19 09:36:00
【问题描述】:
我对 Docker 有点陌生,我正在尝试使用 MySQL 为 Django 应用程序构建图像。我遇到的问题是,在运行我的图像后出现以下错误: django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld /mysqld.sock' (111)") 。作为我使用 FROM django:python2 的图像的基础,我使用以下命令安装了服务器:
RUN echo "mysql-server mysql-server/root_password password X" | debconf-set-selectionsRUN echo "mysql-server mysql-server/root_password_again password X" | debconf-set-selectionsRUN apt-get update && apt-get install -y mysql-server
为了解决这个问题,我尝试了多种解决方案,我在互联网上找到了这些解决方案,例如:
RUN touch /var/run/mysqld/mysqld.sockRUN chmod -R 755 /var/run/mysqld/mysqld.sockEXPOSE 3306
遗憾的是,没有任何效果。我还确保服务器正在运行,但问题仍然存在。
【问题讨论】:
-
让我们看看你的
Dockerfile和docker-compose.yml文件。settings.py中的数据库设置也有助于提供一些见解。 -
因为我对 stackoverflow 也有点陌生,所以我不确定如何发布整个文件。老实说,我已经在帖子中写了大部分
Dockerfile,除了apt-get用于不同的模块等。至于docker-compose我写了一些简短的东西,它失败了同样的错误,所以我决定先得到我的@ 987654334@正在运行。 -
你能进入正在运行的容器吗?
docker exec -it [your container name here] /bin/bash会给你一个shell,你可以在其中进行一些调试。从容器内部,您可以尝试查看 mysql 是否正在运行(看起来不像):/etc/init.d/mysql status -
MySQL 应该像我一样运行
RUN service mysql start -
您在数据库配置中将
HOST设置为什么?