shr*_*ing 5 python django pycharm docker docker-compose
我尝试为我们的django应用程序构建一个基于docker的开发盒.它运行顺利.
在有一个很好的IDE集成之前,我的团队成员都不关心这一点,因此我在pycharm 5中玩新的闪亮的Docker支持.
我按照链接的文档,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"
Run Code Online (Sandbox Code Playgroud)
不幸的是,pycharm中runserver没有docker-compose支持,这就是为什么djangos 在连接到数据库时失败了.因此,我从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
Run Code Online (Sandbox Code Playgroud)
现在数据库连接错误不再存在,但我的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
Run Code Online (Sandbox Code Playgroud)
没有堆栈跟踪,只是这个.
有什么奇怪的:python -u /opt/project/manage.py- 这是什么?主机和容器上都不存在该文件夹.
我的Django Server conf:
我试过像这样的纯python conf:
这就像巨大的混乱,因为它再次尝试通过"数据库"链接连接,即使我从设置中删除它.
调试的后续步骤是什么?
奖金问题:pyCharm确实识别项目设置中已安装的软件包,但是在代码中找不到它,为什么?
UPDATE
我发现pyCharm正在为自己启动容器,而不是使用现有的docker容器.因此,看起来pyCharm只能使用单个容器,这似乎根本没用.
事实证明,pycharm 5每个项目只支持一个容器.基本上,转换为"Docker支持在pyCharm 5中无用".
这里要求在docker compose之上进行多容器管理,正在等待您的upvote:
https://youtrack.jetbrains.com/issue/IDEA-137765
| 归档时间: |
|
| 查看次数: |
3875 次 |
| 最近记录: |