首页 > 解决方案 > 如何使用 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 ".*" ".*" ".*"

标签: pythondjangodockerrabbitmq

解决方案


在依赖其他几个服务时,我进行开发的方式是使用 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. 此外,您不必担心网络问题,因为所有这些都将出现在一个网络中。


推荐阅读