python - 如何使用 rabbitmq 从 docker 容器中运行 Django 应用程序
问题描述
我有一个 django 应用程序,我想在本地运行它并查看我在 localhost 上同时进行的更改,而不是每次都将其部署到生产服务器。我以前的开发人员已将这些内容读给我,我尝试了这些步骤但无法在本地启动它。
docker run --rm --name postgres -e POSTGRES_PASSWORD=password -p 5432:5432 - v pgdata:/var/lib/postgresql/data -d postgres:9.6.2
docker run --name redis -d -p 6379:6379 redis
docker run --rm -d --hostname my-rabbit --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 rabbitmq:3
docker exec -it rabbitmq bash
rabbitmqctl add_user wee wee
rabbitmqctl add_vhost wee
rabbitmqctl set_permissions -p wee wee ".*" ".*" ".*"
解决方案
在依赖其他几个服务时,我进行开发的方式是使用 docker-compose 来启动所有内容并使其相互连接。例如,您现在使用的相当于以下内容
version: '3.5'
volumes:
pgdata:
services:
postgres:
container_name: "postgres"
image: postgres:9.6.2
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: "password"
redis:
container_name: "redis"
image: redis
ports:
- "6379:6379"
rabbitmq:
container_name: "rabbitmq"
image: rabbitmq:3
hostname: my-rabbit
ports:
- "5671:5671"
- "5672:5672"
- "4369:4369"
- "25672:25672"
然后,我将为您的 django 应用程序定义另一个服务,但您拥有所有可供 django 在本地主机上访问的服务可能就足够了。如果您要定义另一个服务,它可能如下所示。django: container_name: "django_app" image: python:latest volumes: - "./path-to-your-application/:/path-to-where-your-code-will-run/:rw depends_on: - postgres - rabbit_mq - reddis 环境:SOME_SETTING:“它的价值”
使用 docker compose 的好处是您可以使用docker-compose up -d
. 此外,您不必担心网络问题,因为所有这些都将出现在一个网络中。
推荐阅读
- r - 如何在将列移动到合并行的同时合并行?
- php - 给定时间的两个日期之间的日期范围
- r - 如何在不调用 ggplot() 的情况下将 ggproto 对象添加在一起并保存以备后用?
- javascript - 如何根据另一个数组的对象更改数组的对象
- python - Django:从元组中获取首选值
- php - 如何根据位置调用 PHP 中的函数?
- scala - 如何设置配置文件环境?
- python - 如何使用 selenium python 抓取多级下拉列表 [依赖选择]
- ios - 在Objective-C的实现文件中的setter方法中去除特殊字符的NSString
- forms - Vue Netlify 表单成功提交但未显示在 netlify 网站中