在Docker容器中使用MySQL

我有点新的Docker,我正在尝试使用MySQL为Django应用程序构build一个图像。 我遇到的问题是,运行我的图像后,我得到以下错误: django.db.utils.OperationalError:(2002,“无法通过套接字连接到本地MySQL服务器”/ var / run / mysqld / mysqld。袜子(111)“) 。 作为我使用的图像的基础FROM django:python2 ,我已经安装了服务器使用以下命令:

  • RUN echo "mysql-server mysql-server/root_password password X" | debconf-set-selections
  • RUN echo "mysql-server mysql-server/root_password_again password X" | debconf-set-selections
  • RUN apt-get update && apt-get install -y mysql-server

为了解决这个问题,我尝试了多种解决scheme,我在网上find了这样的解决scheme:

  • RUN touch /var/run/mysqld/mysqld.sock
  • RUN chmod -R 755 /var/run/mysqld/mysqld.sock
  • EXPOSE 3306

可悲的是,没有任何工作。 我也确定服务器正在运行,但问题仍然存在。

这是一个很好的configuration示例。

Dockerfile

 FROM python:3.5 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD . /code/ RUN pip install -r requirements.txt 

确保将path更改为您的requirements.txt文件(如果存在)。

泊坞窗,compose.yml

 db: image: mysql web: build: . environment: - PYTHONPATH=/code/server/ - DJANGO_SETTINGS_MODULE=path.to.your.settings.file command: python server/manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db 

确保将正确的虚线pathreplace为DJANGO_SETTINGS_MODULEpath到您的设置文件。

docker-compose build然后docker-compose up

编辑

如果你使用这个configuration,在settings.py中把HOST的值改为db