【问题标题】:Dockerized Oracle schema gone after docker-compose down在 docker-compose down 之后,Dockerized Oracle 模式消失了
【发布时间】:2020-04-28 08:22:51
【问题描述】:

我发现我的 Dockerized Oracle 像我做 docker-compose up -d oracle 一样重新创建了整个架构(表、包等)。可悲的是丢失了我所有的本地数据T_T

架构是在容器首次启动时自动创建的。我读过的一些材料说, docker-compose down 将撤消 docker-compose up 所做的任何事情。

我想知道这是否属实,是否与我的问题有关?

下面是我的卷在 docker-compose.yml 中对 Oracle 的配置

volumes:
  - ${HOST_PATH}/config/localtime:/etc/localtime:ro
  - ${HOST_PATH}/config/timezone:/etc/timezone:ro
  - ${HOST_PATH}/config/scripts/:/scripts/:ro
  - oracle_data:/opt/oracle/oradata
  # Setup data pump directory to initialize the database
  - ${HOST_PATH}/test-data/prebuilt/:/prebuilt/
  - ${HOST_PATH}/test-data/datapump/:/datapump/
  - ${HOST_PATH}/config/oracle/ora-init-scripts/:/opt/oracle/scripts/startup

我不确定,但我认为主要数据未使用此配置安装到外部 - oracle_data:/opt/oracle/oradata 因此内部卷将随着容器被 docker-compose down 破坏而被破坏?

【问题讨论】:

  • 你研究过 Docker 卷吗?停止容器不应破坏数据。
  • 执行 docker-compose stop 不会破坏数据。但是 docker-compose down 呢?我已将卷的配置放在问题中。
  • 快速谷歌搜索会告诉你down 删除容器/卷。
  • 我知道 docker-compose down 会删除容器,但只有使用参数 -v 它也会删除卷。而且我从来没有使用 -v..
  • 这不是docker compose 的问题,它在做什么,而是您的卷是什么以及您是否保留了数据库数据文件。另一方面,这在很大程度上取决于您使用的 Docker 映像以及数据文件的放置位置。默认情况下,Oracle 数据库会将您的所有数据库数据文件放在$ORACLE_HOME/oradata/$ORACLE_SID 下,只要它存在,您的数据也会存在。查看上面的内容,我在您的卷配置中看不到任何 oradata 或类似内容。您使用的是哪个 Docker 映像,数据库数据文件驻留在哪里?

标签: oracle docker docker-compose


【解决方案1】:

docker-compose down 确实会破坏从相应的docker-compose.yml 文件中创建的卷。您可以在外部创建卷,也可以明确指定应该支持您的卷的服务器目录。 this question 的答案提供了一个工作示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多