首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用docker-compose链接django和mysql容器

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

Stack Overflow用户
提问于 2015-06-25 04:00:44
回答 3查看 18.8K关注 0票数 16

我一直在学习docker-compose教程here (连接django和postgres容器)。尽管我能够完成本教程,但是我不能继续使用mysql容器重复相同的操作。下面是我的dockerfile和docker-compose.yml `

代码语言:javascript
复制
db:
  image: mysql
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db:db

` dockerfile

代码语言:javascript
复制
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 compose版本

代码语言:javascript
复制
docker-compose version: 1.3.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

Docker版本

代码语言:javascript
复制
Docker version 1.6.2, build 7c8fca2
EN

回答 3

Stack Overflow用户

发布于 2016-01-22 21:14:55

Django settings.py文件中,确保您有如下内容:

代码语言:javascript
复制
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django1',
    'USER': 'django',
    'PASSWORD': 'password', 
    'HOST': 'db',
    'PORT': 3306,
    }
}

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

代码语言:javascript
复制
db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: docker
    MYSQL_DATABASE: docker
    MYSQL_USER: docker
    MYSQL_PASSWORD: docker

然后,根据您正在遵循的docker/django教程,再次运行以下命令来重新构建一切,一切都应该开始工作了

代码语言:javascript
复制
docker-compose run web django-admin.py startproject composeexample .

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

编辑:已将run添加到上面的docker-compose;请参阅编辑注释

票数 14
EN

Stack Overflow用户

发布于 2015-06-25 07:56:02

您不需要担心环境变量。在将容器链接在一起时,您只需使用链接定义的容器别名,就好像它是主机名一样。

例如,如果您的docker-compose.yml文件是:

代码语言:javascript
复制
db:
  image: postgres
web:
  build: .
  command: python manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db:mydb

在django设置中,您必须将数据库主机设置为mydb

票数 3
EN

Stack Overflow用户

发布于 2015-06-25 08:14:15

首先,您需要修改设置文件...

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    } }

然后,如果您正确地使用了docker-compose命令,那么容器应该是链接的,并且它应该根据docker-compose.yml文件中的links正确地解析主机名db

不过,如果你想检查环境...

代码语言:javascript
复制
~/django-example: docker-compose run web env
Starting djangoexample_db_1...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=66ff09ed8632
TERM=xterm
DJANGOEXAMPLE_DB_1_PORT=tcp://172.17.0.35:5432
DJANGOEXAMPLE_DB_1_PORT_5432_TCP=tcp://172.17.0.35:5432
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_ADDR=172.17.0.35
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_PORT=5432
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_PROTO=tcp
DJANGOEXAMPLE_DB_1_NAME=/djangoexample_web_run_2/djangoexample_db_1
DJANGOEXAMPLE_DB_1_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f
DJANGOEXAMPLE_DB_1_ENV_LANG=en_US.utf8
DJANGOEXAMPLE_DB_1_ENV_PG_MAJOR=9.4
DJANGOEXAMPLE_DB_1_ENV_PG_VERSION=9.4.4-1.pgdg70+1
DJANGOEXAMPLE_DB_1_ENV_PGDATA=/var/lib/postgresql/data
DB_PORT=tcp://172.17.0.35:5432
DB_PORT_5432_TCP=tcp://172.17.0.35:5432
DB_PORT_5432_TCP_ADDR=172.17.0.35
DB_PORT_5432_TCP_PORT=5432
DB_PORT_5432_TCP_PROTO=tcp
DB_NAME=/djangoexample_web_run_2/db
DB_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f
DB_ENV_LANG=en_US.utf8
DB_ENV_PG_MAJOR=9.4
DB_ENV_PG_VERSION=9.4.4-1.pgdg70+1
DB_ENV_PGDATA=/var/lib/postgresql/data
DB_1_PORT=tcp://172.17.0.35:5432
DB_1_PORT_5432_TCP=tcp://172.17.0.35:5432
DB_1_PORT_5432_TCP_ADDR=172.17.0.35
DB_1_PORT_5432_TCP_PORT=5432
DB_1_PORT_5432_TCP_PROTO=tcp
DB_1_NAME=/djangoexample_web_run_2/db_1
DB_1_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f
DB_1_ENV_LANG=en_US.utf8
DB_1_ENV_PG_MAJOR=9.4
DB_1_ENV_PG_VERSION=9.4.4-1.pgdg70+1
DB_1_ENV_PGDATA=/var/lib/postgresql/data
LANG=C.UTF-8
PYTHON_VERSION=2.7.10
PYTHON_PIP_VERSION=7.0.3
PYTHONUNBUFFERED=1
HOME=/root
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31035887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档