Postgresql Docker Postgres使用隔离实例运行多个Docker
我要求docker/docker compose运行两个不同的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
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