mic*_*ngi 13 mysql django docker dockerfile docker-compose
我一直关注这里的docker-compose教程(链接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
Run Code Online (Sandbox Code Playgroud)
`dockerfile
FROM python:2.7
RUN mkdir /code
WORKDIR /code
RUN pip install mysql-python
RUN pip install django
Run Code Online (Sandbox Code Playgroud)
它们在我这样做时都很好,docker-compose up但似乎db环境变量没有传递给django容器,因为当我os.environ.keys()在我的一个django视图中运行时,我看不到任何预期的DB_*环境变量.所以mysql需要不同的设置或我错过了什么.谢谢.
[编辑] Docker撰写版本
docker-compose version: 1.3.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)
Docker版本
Docker version 1.6.2, build 7c8fca2
Run Code Online (Sandbox Code Playgroud)
Ano*_*ame 12
在Django settings.py文件中,请确保您具有以下内容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django1',
'USER': 'django',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': 3306,
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的docker-compose.yml文件中确保您有以下内容:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: docker
MYSQL_DATABASE: docker
MYSQL_USER: docker
MYSQL_PASSWORD: docker
Run Code Online (Sandbox Code Playgroud)
然后按照docker/django教程,您将再次运行以下内容来重建所有内容,并且应该开始工作
docker-compose run web django-admin.py startproject composeexample .
Run Code Online (Sandbox Code Playgroud)
在回答另一个问题时,docker在创建新数据库时需要mysql root密码变量.
你不需要担心环境变量。将容器链接在一起时,您只需使用链接定义的容器别名,就好像它是主机名一样。
例如,如果您的docker-compose.yml文件是:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db:mydb
Run Code Online (Sandbox Code Playgroud)
在 django 设置中,您必须将数据库主机设置为mydb.
| 归档时间: |
|
| 查看次数: |
15213 次 |
| 最近记录: |