当前位置: 首页 > 知识库问答 >
问题:

如何将PostgreSQL数据移动到Docker容器中?

封景曜
2023-03-14

我正在使用PostgreSQL创建一个简单的Spring Boot应用程序。我使用“docker-comush up”创建了2个图像和容器,我还使用Flyway将我的数据库表迁移到容器中。

问题是如何移动数据,或者如何在Docker容器应用程序上访问本地计算机上的数据库数据?

我在Docker容器上运行我的应用程序,并使用获取HTTP方法,但没有数据。我得到一个空的JSON,而如果我不使用Docker运行它,我得到了数据。也许有人知道如何迁移数据或以某种方式访问存储在本地机器上的数据?

我的docker-compose.yaml文件是这样的:

version: '3.8'
services:
app:
container_name: docker-meetings
image: docker_meetings
build: ./
ports:
- "8082:8080"
depends_on:
- postgresqldb
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgresqldb:5432/meetingsdb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&stringtype=unspecified
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=DB
- SPRING_JPA_HIBERNATE_DDL_AUTO=none
postgresqldb:
image: postgres
restart: always
ports:
- "5432:5432"
volumes:
- ./Program Files/PostgreSQL/14/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=DB
- POSTGRES_DB=meetingsdb
- PGDATA=./Program Files/PostgreSQL/14/data
volumes:
postgresqldb: {}

我的Dockerfile如下所示:

FROM openjdk:11
ADD target/visma-meeting-app-withdb-0.0.1-SNAPSHOT.jar visma-meeting-app-withdb-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","visma-meeting-app-withdb-0.0.1-SNAPSHOT.jar"]

共有1个答案

盖翰池
2023-03-14

也许,问题在于数量

volumes:
- ./Program Files/PostgreSQL/14/data

你可以试试这个,数据会存储在/PG数据存储在本地机器中,并存储在docker容器中的postgres中。

db:
    image: "postgres:12.6-alpine"
    container_name: db
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER={POSTGRES_USER}
      - POSTGRES_PASSWORD={POSTGRES_PASSWORD}
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    restart: always
 类似资料:
  • 问题内容: 我正在练习制作一个与PostgreSQL数据库交互的Golang Web应用程序,每个应用程序都在各自的容器上运行。 我正在运行容器 但是我似乎无法正确设置postgres容器。 为简便起见,指向s和其他设置文件的链接位于此要点上(如果您需要在此处,请告诉我)。 工作良好。但是,当应用程序尝试使用以下方法打开数据库连接时: 我从docker compose得到以下错误: 如何使两个容器

  • 问题内容: 这个问题的答案不起作用。 在我可以接受或不接受该标志之前,docker容器始终会退出。我可以列出所有尝试过的命令,但这是 各种标志和的组合。 如何将现有的容器启动到bash中?为什么这么难?这是对Docker的“不当”使用吗? 编辑:我用创建了容器。有关容器的信息: 问题答案: 首先,容器不是虚拟机。容器是用于运行进程的隔离环境。容器的生命周期与内部运行的进程绑定在一起。当进程退出时,

  • 我们注意到我们的容器占用了很多空间,其中一个原因是图像。 我们想移动图像。 我知道现在它们存储在

  • 7)在中,更改模拟器实例的绝对路径 当尝试在docker中运行模拟器时,会重新创建带有更改的qcow2文件,而不是使用现有文件。:( 我得到相同的android-sdk工具和模拟器版本,相同的JDK等等。 还试图将harware-qemu.ini中的路径更改为新路径(),但没有成功。 关于系统和Docker的一些信息: 1)Android版本23(6.0)x86 google_apis映像 但是现

  • 我已经开始在定义数据库的地方使用docker和docker组合。因为我没有在配置中定义卷(我的错误),所以数据库已经在容器中创建,现在下次运行docker-拉的时候,我将重新创建这个数据库,导致我的数据丢失。在不丢失数据的情况下将数据移出容器的最佳方法是什么? Dockerfile

  • 我正在使用我的Mac上的docker-compose(使用boot2docker)与官方的WordPress Docker图像一起工作。我需要做一次一次性的数据导入。我不知道该怎么做。如何将数据导入数据库容器?