python - 带有pycharm 5的 docker

标签 python django docker pycharm docker-compose

我尝试为我们的 django 应用构建一个基于 docker 的开发箱。它运行顺利。

在有一个很好的 IDE 集成之前,我的团队成员都不会关心这个,因此我玩新的 Shiny 的 Docker Support in pycharm 5 .

我遵循了链接的文档,pycharm 确实识别了我的 web 容器,它是 python 解释器。

这是我的 docker-compose.yml:

web:
  build: .
  ports:
    - "8000:8000"
  volumes:
    - .:/srv/app
  links:
    - database
    - search
    - cache
  entrypoint: /home/deployer/web-entrypoint.sh


worker:
  build: .
  volumes:
    - .:/srv/app
  command: celery -A core worker -l info
  links:
    - database
    - search
    - cache

database:
  image: postgres:latest
  volumes_from:
    - data
  environment:
    - POSTGRES_USER=app_user
    - POSTGRES_PASSWORD=app_password

data:
  image: busybox
  volumes:
    - /var/lib/postgresql/data

search:
  image: "elasticsearch:1.7"
  command: "elasticsearch --http.bind_host=0.0.0.0"
  ports:
    - "9200:9200"

cache:
  image: "redis:latest"
  ports:
    - "6379"

不幸的是,pycharm 不支持 docker-compose,这就是为什么 djangos runserver 在连接到数据库时失败的原因。因此,我从 Web 容器的 /etc/host 复制了(幸运的是可以预见的)别名:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'app_db',
        'USER': 'app_user',
        'PASSWORD': 'app_password',
        'HOST': 'docker_database_1',
        'PORT': '5432',
    }
}

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://docker_search_1:9200/',
        'INDEX_NAME': 'app',
    },
}

BROKER_URL = 'redis://docker_cache_1:6379/0'
CELERY_RESULT_BACKEND = BROKER_URL

现在数据库连接错误不复存在了,但是我的 django 服务器的输出是这样的:

a6993f56e61e:python -u /opt/project/manage.py runserver docker:8001 --traceback
Performing system checks...

System check identified no issues (0 silenced).
November 08, 2015 - 19:54:29
Django version 1.8.6, using settings 'core.settings.dev'
Starting development server at http://docker:8001/
Quit the server with CONTROL-C.
Error: [Errno -2] Name or service not known

Process finished with exit code 1

没有堆栈跟踪,只有这个。

奇怪的是:python -u/opt/project/manage.py - 这是什么?该文件夹在主机和容器上都不存在。

我的 Django 服务器配置文件:

Django server conf

我也试过像这样的纯 python conf:

Pure Python Implementation

这就像 super 困惑,因为它会再次尝试通过“数据库”链接进行连接,即使我将其从设置中完全删除也是如此。

接下来的调试步骤是什么?

红利问题:pyCharm 在项目设置中确实能识别已安装的包,但在代码中却找不到,为什么?

Failed import from dist-packages

更新

我发现 pyCharm 正在为自己启动容器,而不是使用现有的 docker 容器。因此,看起来 pyCharm 只能使用单个容器,这似乎根本没有用。

最佳答案

原来pycharm 5只支持一个容器一个项目。基本上这意味着“Docker 支持在 pyCharm 5 中毫无用处”。

这里要求在 docker compose 之上进行多容器管理,正在等待您的投票:

https://youtrack.jetbrains.com/issue/IDEA-137765

关于python - 带有pycharm 5的 docker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598406/

相关文章:

python - Django hstore 字段和索引

django - aptana 创建一个空的 django 项目

django - 如何将数据添加到 ManyToMany 字段?

docker - 如何从环境 ARG 设置 dockerfile 中的 WORKDIR?

python - 添加图像以拉取请求评论

python - pyspark dataframe 将 json 列转换为新列

python - 字典中两个列表结果的比较具有重复的项目

Django - 如何直接从表中的按钮删除对象

docker - `gcloud compute instances create-with-container` 没有记录到 stackdriver

docker - “links”指令如何在docker-compose中工作?