在两个postgres数据库之间冲突,虽然有两个不同的docker – 为Django项目组成yaml文件

我在我的机器上运行两个不同的django项目。 我的机器在os – ubuntu 16.04上运行。

docker我很新。 据我所知,区分两个项目设置的唯一方法是定义不同的容器。 为了拥有不同的容器,我在docker-compose.yml文件中给出了不同的container_name 。 所以,基本上,我有两个不同的项目有不同的容器名称,我也在每个项目的settings.py文件中使用不同的postgres数据库名称。

以下是两个不同docker-compose.yml文件configuration

PROJECT - 1

 version: '3' services: nginx: restart: always image: nginx:latest container_name: NGINX_P1 ports: - "8000:8000" volumes: - ./src:/src - ./config/nginx:/etc/nginx/conf.d - /static:/static depends_on: - web web: restart: always build: . container_name: DJANGO_P1 command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn safersit.wsgi -b 0.0.0.0:8000 --reload" depends_on: - db volumes: - ./src:/src - /static:/static expose: - "8000" db: restart: always image: postgres:latest container_name: PSQL_P1 

而且,project-1的settings.py文件是:

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'postgres_test', <--- different name for postgres 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } } 

对于PROJECT - 2

 version: '3' services: nginx: restart: always image: nginx:latest container_name: NGINX_P2 ports: - "8000:8000" volumes: - ./src:/src - ./config/nginx:/etc/nginx/conf.d - /static:/static depends_on: - web web: restart: always build: . container_name: DJANGO_P2 command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn safersit.wsgi -b 0.0.0.0:8000 --reload" depends_on: - db volumes: - ./src:/src - /static:/static expose: - "8000" db: restart: always image: postgres:latest container_name: PSQL_P2 

而且,project-2的settings.py文件如下所示:

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } } 

项目1已经build立并运行良好。 但是,当我尝试运行第二个项目时,出现以下错误:

 DJANGO_P2 | users.User.numbers: (models.E006) The field 'numbers' clashes with the field 'numbers' from model 'users.user'. 

我的秒计划用户模型中没有任何名为numbers字段,但它试图从我的第一个项目(project-1)访问它。 现在我对这个设置感到非常困惑。 我正确的做法吗? 为什么我的第二个项目试图从第一个项目访问数据库,即使我有不同的容器名称和数据库名称?

PROJECT-1文件夹结构

 . ├── config │  ├── nginx │  └── requirements.pip ├── docker-compose-backup.yml ├── docker-compose.yml ├── Dockerfile ├── README.md └── src ├── project1 ├── manage.py ├── messages └── users 

PROJECT-2文件夹结构:

 . ├── config │  ├── nginx │  └── requirements.pip ├── docker-compose.yml ├── Dockerfile ├── README.md └── src ├── manage.py ├── project2 └── users 

这两个项目的运行容器列表如下:

 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f12e1f78ce3 nginx:latest "nginx -g 'daemon ..." 21 minutes ago Exited (0) 11 minutes ago NGINX_P1 6c20c4a10a8a project1server_web "bash -c 'python m..." About an hour ago Up 23 minutes 8000/tcp DJANGO_P1 b7781939ce29 postgres:latest "docker-entrypoint..." About an hour ago Up 23 minutes 5432/tcp PSQL_P1 4600da6f7d29 nginx:latest "nginx -g 'daemon ..." 9 hours ago Exited (0) 9 minutes ago NGINX_P2 3069796edfd5 project2server_web "bash -c 'python m..." 9 hours ago Restarting (1) 14 minutes ago DJANGO_P2 3be863184995 postgres:latest "docker-entrypoint..." 9 hours ago Up About an hour 5432/tcp PSQL_P2 

我将很感激你的指导。