Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Docker Postgres使用隔离实例运行多个Docker_Postgresql_Docker_Docker Compose - Fatal编程技术网

Postgresql Docker Postgres使用隔离实例运行多个Docker

Postgresql Docker Postgres使用隔离实例运行多个Docker,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,我要求docker/docker compose运行两个不同的postgres实例,但我需要它们的数据完全分开,因为两个应用程序完全控制数据库服务器,而不仅仅是一个数据库 这是docker文件,每个项目目录中都有一个 FROM postgres:10-alpine COPY data/resources.sql.gz /docker-entrypoint-initdb.d/resources.sql.gz ENV POSTGRES_USER=postgres ENV POSTGRES_PASSW

我要求docker/docker compose运行两个不同的postgres实例,但我需要它们的数据完全分开,因为两个应用程序完全控制数据库服务器,而不仅仅是一个数据库

这是docker文件,每个项目目录中都有一个

FROM postgres:10-alpine
COPY data/resources.sql.gz /docker-entrypoint-initdb.d/resources.sql.gz
ENV POSTGRES_USER=postgres
ENV POSTGRES_PASSWORD=123456
这是来自每个docker compose的部分,每个项目目录中都有一个

FROM postgres:10-alpine
COPY data/resources.sql.gz /docker-entrypoint-initdb.d/resources.sql.gz
ENV POSTGRES_USER=postgres
ENV POSTGRES_PASSWORD=123456
项目1

db_test:
   image: postgres:10-alpine
   container_name: postgres_test
   restart: always
   expose:
    - '5432'
   environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=123456
    - PGDATA=/db
   volumes:
    - ./db:/db
   networks:
     backend:
       ipv4_address: 172.16.1.6
项目2

 db:
   image: postgres:10-alpine
   container_name: postgres
   restart: always
   expose:
    - '5432'
   environment:
    - POSTGRES_USER=postgres
    - POSTGRES_PASSWORD=123456
    - PGDATA=/db
   volumes:
    - ./db:/db
   networks:
     backend:
       ipv4_address: 172.16.0.6
我还应该注意到,resources.sql.gz对于每个项目都是唯一的

我遇到的问题是,我构建项目1,然后停止docker

然后我构建了项目2,出于某种原因,它从项目1继承了数据库


我需要将两者完全分离,以便可以使用不同的端口(如果需要)并排运行它们。

一个选项是创建两个不同的docker卷:

docker-compose.yml


您正在为这两个服务使用相同的数据库存储。这就像使用一个数据库和两个访问点一样

部分更改为:

  • db
    服务中:
  • db\u测试中
    服务:
环境
部分删除以下内容:

- PGDATA=/db

这两个YAML文件是否在同一目录中?看起来两个数据库使用的是相同的
/db
主机目录,因此它们是相同的。
volumes:
  - ./db_test:/var/lib/postgresql/data
- PGDATA=/db