数据库
首页 > 数据库> > 使用docker-compose链接django和mysql容器

使用docker-compose链接django和mysql容器

作者:互联网

我一直在关注docker-compose教程here(链接django和postgres容器).虽然我能够完成教程但是我无法继续重复相同的操作
使用mysql容器.
以下是我的dockerfile和docker-compose.yml
`

db:
  image: mysql
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db:db

`
dockerfile

FROM python:2.7
RUN mkdir /code
WORKDIR /code
RUN pip install mysql-python
RUN pip install django

当我进行docker-compose时它们都构建得很好但是似乎db环境变量没有传递给django容器,因为当我在我的一个django视图中运行os.environ.keys()时,我看不到任何一个预期的DB_ *环境变量.
所以mysql需要不同的设置或我错过了什么.
谢谢.

[编辑]
Docker撰写版本

docker-compose version: 1.3.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

Docker版本

Docker version 1.6.2, build 7c8fca2

解决方法:

在Django settings.py文件中,请确保您具有以下内容:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django1',
    'USER': 'django',
    'PASSWORD': 'password', 
    'HOST': 'db',
    'PORT': 3306,
    }
}

然后在您的docker-compose.yml文件中确保您有以下内容:

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: docker
    MYSQL_DATABASE: docker
    MYSQL_USER: docker
    MYSQL_PASSWORD: docker

然后按照docker / django教程,您将再次运行以下内容来重建所有内容,并且应该开始工作

docker-compose run web django-admin.py startproject composeexample .

在回答另一个问题时,docker在创建新数据库时需要mysql root密码变量.

编辑:添加运行到docker-compose上面;看编辑评论

标签:docker,docker-compose,mysql,django,dockerfile
来源: https://codeday.me/bug/20191005/1856830.html