我一直在关注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 up
时它们都构建正常但是似乎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
3 回答
在 Django settings.py 文件中,请确保您具有以下内容:
然后在你的 docker-compose.yml 文件中确保你有以下内容:
然后按照docker / django教程,您将再次运行以下内容来重建所有内容,并且应该开始工作
在回答另一个问题时,docker在创建新数据库时需要mysql root密码变量 .
编辑:将
run
添加到docker-compose
以上;看编辑评论你不需要担心环境变量 . 将容器链接在一起时,只需使用链接定义的容器别名,就好像它是主机名一样 .
例如,如果您的
docker-compose.yml
文件是:在django设置中,您必须将数据库主机设置为
mydb
.首先,您需要修改设置文件...
然后,如果正确使用
docker-compose
命令,则应链接容器,并且应根据docker-compose.yml
文件中的links
正确解析主机名db
.不过,如果你想检查环境......