使用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