【发布时间】:2019-01-05 14:52:38
【问题描述】:
我有一个简单的 dockerized Django gunicorn、nginx 和 postgress 项目(每个都是一个服务)。
当我使用 docker-compose up 运行它时,一切正常:
maximd@ubuntu ~/PycharmProjects/MyQ (master) $ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------
myq_database1_1 docker-entrypoint.sh postgres Up 5432/tcp
myq_djangoapp_1 /bin/sh -c gunicorn --bind ... Up 8000/tcp
myq_nginx_1 nginx -g daemon off; Up 0.0.0.0:8000->80/tcp
但是,当我使用 pycharm 调试器午餐时,它不会运行 nginx。
我怀疑由于 djangoapp 依赖于我的 docker-compose.yml 文件中的数据库服务,它只是创建了它们,但它不运行 nginx。
这是我在调试器中使用 pycharm 运行它后看到的:
maximd@ubuntu ~/PycharmProjects/MyQ (master) $ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------
myq_database1_1 docker-entrypoint.sh postgres Up 5432/tcp
myq_djangoapp_1 python -u /opt/.pycharm_he ... Up 0.0.0.0:55488->55488/tcp, 8000/tcp
myq_nginx_1 nginx -g daemon off; Exit 0
所以,我的问题是:有没有办法让 nginx 也成为 djangoapp 的依赖项?有没有办法让 pycharm 运行所有服务,而不仅仅是我要调试的服务?
这是我的 docker-compose.yml 文件:
version: '3'
services:
djangoapp:
build: .
volumes:
- .:/services/djangoapp
- static_volume:/services/djangoapp/static
- media_volume:/services/djangoapp/media
networks:
- nginx_network
- database1_network
depends_on:
- database1
nginx:
image: nginx:1.13
ports:
- 8000:80
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- static_volume:/services/djangoapp/static
- media_volume:/services/djangoapp/media
depends_on:
- djangoapp
networks:
- nginx_network
database1: # <-- IMPORTANT: same name as in DATABASES setting, otherwise Django won't find the database!
image: postgres:10
env_file:
- config/db/database1_env
networks:
- database1_network
volumes:
- database1_volume:/var/lib/postgresql/data
networks:
nginx_network:
driver: bridge
database1_network:
driver: bridge
volumes:
database1_volume:
static_volume:
media_volume:
【问题讨论】:
-
您是否尝试将
Service部分空白留在配置中? -
@pawamoy,其实我想想,那不,我今天下班后试试。
-
我尝试了其他一些可能相关的事情:在调试配置中:仅单实例复选框,选中和未选中,两者都没有做任何事情。在调试配置中:将工作目录设置为:/services/djangoapp(docker容器中的项目根目录)也没有做任何事情
-
我真的认为将 Service 留空将解决您的问题。如果指定
djangoapp服务,则不会启动nginx容器。但实际上这可能不是问题,因为在本地/开发/调试中您不需要 nginx:gunicorn 就足够了。也许尝试在你的 docker-compose 中为 djangoapp 服务绑定- ports: 8000:8000! -
@pawamoy 我昨天尝试了你的建议,pycharm 不允许将服务留空,因为它试图在服务中定位 python 解释器。
标签: docker nginx docker-compose pycharm